Я пытаюсь скомпилировать мой код, используя Mingw cmake для Windows,
Я создал базовые статические библиотеки, которые я назвал следующим:
pci_elements_libnamepci_server_monostate_libnameini_file_handler_libname
Я собрал Dll из нескольких классов и добавил вышеуказанные статические библиотеки в качестве целевой ссылки, используя cmake
file(GLOB_RECURSE src_sources "src/*.cpp") #put all .cpp files in sources
if(win_64)
link_directories("C:\\Program Files\\Mellanox\\WinMFT\\lib" "C:\\xz-5.2.4-windows\\bin_x86-64" "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\opt\\lib")
else()
link_directories(/usr/lib/mft)
endif()
set(sources ${src_sources})
add_library(${pci_test_libname} SHARED ${sources})
target_link_libraries(${pci_test_libname} ${pci_elements_libname}
${pci_server_monostate_libname} ${ini_file_handler_libname} ${Boost_LIBRARIES} )
Впоследствии я создал exe-ссылку на эту dll.
Я имею с кодом в Windows:
я получаю неопределенную ссылку при попыткеиспользовать классы в статических библиотеках (шаг 1), которые определили в dll (шаг 2).Такой код компилируется и отлично работает в Linux при сборке (.so вместо dll), почему он не работает в Windows?
Я удалил весь код, вызвавший неопределенные ссылки, из проблемы № 1.Я размещаю статический и финальный класс в Dll, который широко используется в моих exe / статических библиотеках в linux, как только я пытаюсь использовать его в Windows, я получаю этот класс в Null.