Компиляция динамически подключаемых библиотек

#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. К сожалению, те же результаты =/ !