我下載了一個框架並決定將它捆綁爲一個.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