我下载了一个框架并决定将它捆绑为一个.so文件以包含在我的其他项目中。但是框架依赖于一些静态库。我在多篇文章中看到,您无法将静态库链接到.so,因为并非所有链接程序都支持这一点。CMake:使用需要静态库的动态库构建exe文件
因此,我试图链接静态库到exe文件,并链接.so。我得到的错误说引用是未定义的(引用静态库中的东西)。
例如:
add_library(framework3 SHARED ${MY_SOURCES}) #produces libframework3.so
然后在EXE项目:
add_executable(renderer.exe ${MY_SOURCES})
target_link_libraries(tsx_renderer.exe framework3)
target_link_libraries (renderer.exe ${PROJECT_SOURCE_DIR}/Framework/Libs/libjpeg.lib)
target_link_libraries (renderer.exe ${PROJECT_SOURCE_DIR}/Framework/Libs/libpng.lib)
该错误消息我得到的是:
/home/joe/ClionProjects/proj/build/libframework3.so: undefined reference to `jpeg_destroy_compress'
/home/joe/ClionProjects/proj/build/libframework3.so: undefined reference to `png_set_write_fn'
事实上这是问题,我能够用“Z”短名称包括的lib同样,这让我有点失落。 – Joe 2014-11-18 17:39:12