我下载了一个框架并决定将其捆绑为 .so 以包含在我的其他项目中。该框架确实依赖于一些静态库。我在多篇文章中看到您无法将静态库链接到 .so 中,因为并非所有链接器都支持这一点。
所以我然后尝试将静态库链接到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'