CMake Visual Studio связывает исполняемый файл со статической библиотекой

У меня есть очень простой (в настоящее время просто main.cpp) проект CMake C++, который я пытаюсь создать как в Mac OS X, так и в Windows. Это зависит от libgsasl, который я скомпилировал как статическую библиотеку на обеих платформах.

У Mac OS X нет проблем со сборкой, и Windows также не жалуется во время сборки и создает EXE. Когда я пытаюсь запустить EXE-файл в Windows, появляется сообщение об ошибке, в котором говорится, что приложение не может быть запущено, поскольку не может найти libgsasl.dll.

Я даже не пытаюсь ссылаться на динамическую библиотеку, только на статическую библиотеку (версия .lib). Я что-то упускаю? В Visual Studio похоже, что файл gsasl.lib найден и включен в команду связывания.


person Matt Moriarity    schedule 16.10.2009    source источник
comment
Можете ли вы опубликовать точную команду, которую cl использует для сборки exe?   -  person David Seiler    schedule 16.10.2009
comment
Можете ли вы опубликовать свой CMakeLists.txt?   -  person Nadir SOUALEM    schedule 17.10.2009


Ответы (1)


В цепочке инструментов MS .lib может быть либо статической библиотекой, либо библиотекой импорта в реальную DLL.

Вы можете использовать dumpbin, чтобы заглянуть внутрь библиотеки, чтобы увидеть ее фактический тип. Есть несколько разных способов обработки деталей, но я предпочитаю использовать параметр /summary. Библиотека импорта будет иметь разделы .idata$n (где n — целое число), а статическая библиотека будет иметь раздел .text.

person R Samuel Klatchko    schedule 19.10.2009