C / C ++所以未定义的符号

时间:2018-04-19 11:42:42

标签: c++ c gcc dynamic cmake

我正在尝试创建一个使用纯“C”(libSetupConfig.so)编写的动态库,另一个使用“C ++”(libUserAnalysis.so),这样第二个使用第一个的功能。该项目使用CMake构建。

完整的来源是: release notes

编译运行正常。输出在这里: https://github.com/evovch/Useful/tree/master/go4_5H_processor

尝试使用该库时,我收到类似的运行时错误: go4analysis:符号查找错误:... / build / src / libUserAnalysis.so:未定义符号:_Z18InitStcSetupConfigP17_stc_setup_config

https://github.com/evovch/Useful/blob/master/go4_5H_processor/compile.txt

所以,我检查符号是否存在于:

nm libSetupConfig.so
...
0000000000001140 T InitStcSetupConfig
...

https://github.com/evovch/Useful/blob/master/go4_5H_processor/err.txt

老实说,我不知道如何解释完整的符号字符串_Z18InitStcSetupConfigP17_stc_setup_config

我的顶级CMakeLists.txt包含以下几行:

add_subdirectory(src)
add_subdirectory(setupconfig)

src下的CMakeLists.txt,对应于libUserAnalysis.so,包含:

add_library(UserAnalysis SHARED ${SOURCE_LIB})
target_link_libraries(UserAnalysis Go4Analysis)
target_link_libraries(UserAnalysis SetupConfig)

setupconfig下的CMakeLists.txt对应libSetupConfig.so包含:

add_library(SetupConfig SHARED ${SOURCE_LIB})
add_executable(setup_config_test ${SOURCE_EXE})
target_link_libraries(setup_config_test SetupConfig)

由此我假设libUserAnalysis.so将链接到libSetupConfig.so

我还检查在编译libUserAnalysis.so时是否链接了libSetupConfig.so库;看到最后一行 https://github.com/evovch/Useful/blob/master/go4_5H_processor/auxiliary/nm_output.txt 必要的标志-L和-l在那里 -L / home / evovch / soft / go4-5.3.0_fairsoftroot / lib -Wl,-rpath,/ home / evovch / soft / FairSoft_install / lib / root:/home/evovch/soft/go4-5.3.0_fairsoftroot/lib: / home / evovch / Documents / Useful / go4_5H_processor / build / setupconfig -lGo4Analysis ../ setupconfig / libSetupConfig.so

PS。我知道问题很可能不是来自语言不同的事实。

0 个答案:

没有答案