Связывание файлов Windows DLL из статических библиотек с использованием CMake без ручной обработки неразрешенных имен символов

Вам нужно просто удалить arm64 из Valid Architecture и установить NO только для активной архитектуры. Теперь просто очистите, создайте и запустите. Вы не увидите эту ошибку еще раз.

:) KP

26
задан Community 23 May 2017 в 11:45
поделиться

1 ответ

Я только отвечаю, чтобы вы поняли, что ваше чувство не использовать статические библиотеки правильное.

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

Если в наборе инструментов Visual & nbsp; 2008 есть пробел, значит, он не поддерживает частичное связывание. Входные данные в частичную ссылку представляют собой набор OBJ-файлов, а выходные данные представляют собой один OBJ-файл, который содержит весь код и данные из входных OBJ-файлов.

Различие между архивом / библиотекой и частичной ссылкой описано для g ++ в ответе на этот вопрос: частичное связывание g ++ вместо архивов? , где компоновщик GNU ( ld ]) поддерживает частичное связывание.

Что касается возможного краткосрочного смягчения - лично я попытался бы использовать сценарии для динамической сборки файла DEF во время сборки, используя LIB /List или DUMPBIN /ARCHIVEMEMBERS для получения файлов obj и LIB /DEF для генерации DEF файл из этого списка. Или, как я предполагаю, используется _declspec(dllexport), вы могли бы также использовать DUMPBIN /DIRECTIVES, искать /EXPORT и создавать файл DEF самостоятельно.

2
ответ дан Community 23 May 2017 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: