我正在尝试使用Mingw cmake for Windows编译我的代码,
我已经构建了基本的静态库,我将其称为以下内容:
pci_elements_libname
pci_server_monostate_libname
ini_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} )
我正在使用Windows中的代码:
在尝试使用在dll中定义了dll(步骤2)的静态库(步骤1)中的类时,我获得了未定义的引用。
这样的代码在编译时(.so而不是dll)可以在linux中编译并完美运行,为什么在Windows中不起作用?
我从问题#1中删除了所有导致未定义引用的代码。我正在Dll中分配静态类和最终类,该类在Linux的exe / static库中广泛使用,一旦尝试在Windows中使用它,我就会在Null中得到该类。