2014-09-07 3 views
1

Я столкнулся с несколькими подобными вопросами, однако на самом деле я не получил своего ответа.Статическая библиотека с динамическими зависимостями

Итак, у меня есть App.exe, который зависит от Static.lib, который, в свою очередь, зависит от динамической библиотеки Dynamic.dll. В Static.lib я ссылаюсь на библиотеку импорта Dynamic.lib. Я понимаю, что теперь App.exe должен иметь Dynamic.dll в своем каталоге, чтобы успешно работать, однако, когда я пытаюсь связать код, я получаю сообщение об ошибке, которое проект приложения не может найти в библиотеке импорта Dynamic.lib.

Вопрос: почему проект приложения должен ссылаться на библиотеку импорта Dynamic.lib, когда он уже связан в Static.lib?

+0

Я работаю под ОС Linux, поэтому то, что я хотел бы сделать в этот момент, - указать LD_LIBRARY_PATH на местоположение моей общей библиотеки. под окнами я нашел это http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx – Kam

+0

@Kam: Мое приложение находит DLL, однако мой вопрос был почему у меня должна быть библиотека импорта в проекте Static.lib и App? Если это зависит от Static.lib и App, не следует ли связать Dynamic.lib с приложением? –

+0

Поскольку статические библиотеки Visual Studio не связаны с другими библиотеками. – drescherjm

ответ

1

Вопрос: почему проект приложения должен ссылаться на библиотеку импорта Dynamic.lib , если она уже связана в Static.lib?

Сначала вам необходимо сгенерировать свою статическую библиотеку, поэтому вы компилируете файлы заголовков разделяемой библиотеки и связываетесь с общей библиотекой.

Затем для генерации .exe вы компилируете файлы заголовков статической библиотеки; Затем вам нужно связать с общей библиотекой, потому что некоторые из методов, найденных в статической библиотеке, реализованы в общей библиотеке.

Смежные вопросы