Как использовать статические переменные из Dll в статических библиотеках (связанных с DLL в cmake)? - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь скомпилировать мой код, используя Mingw cmake для Windows,

  1. Я создал базовые статические библиотеки, которые я назвал следующим:

    pci_elements_libnamepci_server_monostate_libnameini_file_handler_libname

  2. Я собрал 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. я получаю неопределенную ссылку при попыткеиспользовать классы в статических библиотеках (шаг 1), которые определили в dll (шаг 2).Такой код компилируется и отлично работает в Linux при сборке (.so вместо dll), почему он не работает в Windows?

  2. Я удалил весь код, вызвавший неопределенные ссылки, из проблемы № 1.Я размещаю статический и финальный класс в Dll, который широко используется в моих exe / статических библиотеках в linux, как только я пытаюсь использовать его в Windows, я получаю этот класс в Null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...