#windows #dll #cmake
#Windows #dll #cmake
Вопрос:
В настоящее время я пытаюсь скомпилировать динамически подключаемые библиотеки, которые во время выполнения связывались бы с приложением, которое я пишу. Я не уверен, как называются эти библиотеки, поэтому на всякий случай: это те библиотеки, которые вы загружаете не во время компиляции, а во время выполнения, используя :
— dlopen / dlsync с использованием libdl
— LoadLibrary / (еще одна библиотека со сложным именем) с использованием Windows.
Дело в том, что я не могу найти способ CMake для компиляции этих библиотек под Windows: используя Linux, это работает отлично :
set(libName myLib)
set(srcFiles myLib.cpp)
add_library(${libName} MODULE ${srcFiles})
Тем не менее, под управлением Windows это вообще не работает: Makefile пытается связать некоторые фрагменты кода с myLib.cpp ссылается на (но это не должно … эти символы должны быть разрешены во время выполнения).
Я использую генератор MinGW CodeBlocks, если это может помочь.
Комментарии:
1. Приведенный вами здесь код должен отлично создавать dll. Какие ошибки компилятора или компоновщика вы видите?
Ответ №1:
Я думаю, это помогло бы:
add_library(${libname} SHARED ${srcfiles})
Как говорится в документации CMake, МОДУЛЬ следует использовать для создания библиотек, которые должны динамически загружаться с использованием функциональности, подобной dlopen. В Windows используйте SHARED вместо MODULE.
Комментарии:
1. К сожалению, те же результаты =/ !