首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++将静态库与共享库连接起来

C++将静态库与共享库连接起来
EN

Stack Overflow用户
提问于 2017-10-17 10:43:36
回答 1查看 566关注 0票数 0

我正试图在C++中构建一个基于插件的应用程序。

我有两个目标-基础和插件。

这是我做主要工作的CMakeLists.txt的一部分

代码语言:javascript
复制
# Executables
# build plugin
file (GLOB SRCP "plugin/*.?pp")
include_directories(plugin/)
MESSAGE ( STATUS "SRC: " "${SRCP}" )
add_library(testplugin MODULE ${SRCP} )
add_dependencies( testplugin ${DEPS_TARGETS})
#target_link_libraries( testplugin dlib::dlib )
#build main
file( GLOB SRC "*.?pp" )
message( STATUS "SRC: " "${SRC}" )
add_executable( exec ${SRC} )
add_dependencies( exec ${DEPS_TARGETS})
target_link_libraries( exec dlib::dlib )

它成功地构建了,但是当我尝试加载插件时,它会因为这个错误而失败。

错误:无法加载库: libtestplugin.so:未定义符号:_ZN4dlib6loggerD1Ev

该符号对应于插件dlib::logger dlog("main.abstract_cnn");中的一条语句。

dlib是一个静态库,我在基础和插件中都使用它。我将这个库链接到基本应用程序,但不知道如何将链接到库/模块?基础应用程序不会将符号传递给插件吗?在这种情况下我能做什么?

我也想要一个跨平台的解决方案。主要为linux+windows。

有人能告诉我吗?请?

如何加载,我正在使用一个名为Libsourcey的库,该库有一个名为pluga的模块,以便于加载。我的程序是这里给出的基本测试程序,普鲁加。它适用于我,但当我试图包括一个第三方图书馆,我是卡住了。

如果有人能指出解释如何在插件中使用第三方库的资源,那就太棒了!

EN

回答 1

Stack Overflow用户

发布于 2017-10-17 11:54:15

解决了!

我将其添加到cmake文件set(CMAKE_POSITION_INDEPENDENT_CODE ON)中,这是错误消息试图告诉我的(用-fPIC编译)。

我这样做了,现在我可以链接我的插件与静态库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46788239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档