ссылка статическая библиотека в c ++ visual studio

Может кто-нибудь, пожалуйста, помогите мне понять процесс.

в C ++ Visual Studio 2010

у меня есть визуальное студийное решение (назовем его mysol)

у меня есть проект, построенный как статическая библиотека (назовем его staticprj)
staticprj должен использовать библиотеку извне (назовем ее ext.lib)

в теле исходного кода staticprj я включаю внешний заголовочный файл библиотеки с
# включайте extlib.h и вызывайте некоторые из его функций (пусть они называются extfunctions ())
я также включаю путь к расположению заголовочных файлов ext.lib.

staticprj компилируется нормально без ошибок

У mysol также есть другой проект, который представляет собой динамическую библиотеку (dynprj) и зависит от staticprj.

Также в исходных файлах dynprj используются функции извне библиотеки.

я включил #include extlib.h в исходный код dynprj.
я включил путь к заголовочным файлам
я подключил extlib.h напрямую к dynprj
я также добавил ext.lib к входу компоновщика (вместе с путем, где находится ext.lib).

я все еще получаю ошибку lnk2001 о том, что extfunctions (), где не найден.

вся структура (решение mysol) компилируется нормально, если я вообще не использую ext.lib.

Мой вопрос: как работает процесс связывания и что я могу сделать, чтобы исправить эту ошибку связывания?

(обратите внимание, что без наличия ext.lib у меня нет проблем со связыванием staticprj и dynprj. Моя компиляция работает нормально, а мой код работает. Ошибка связывания появляется только тогда, когда я пытаюсь связать другой ext.lib со staticprj и dynprj и использую функции из ext.lib)

заранее спасибо.

2

Решение

Я не совсем уверен, что это будет работать, но попробуйте поместить DLL в папку отладки «mysol». У меня была похожая проблема пару недель назад, когда у меня была библиотека, скомпилированная как .dll. Я просто поместил этот .dll в мою папку отладки и работал прекрасно.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]