【发布时间】:2018-03-22 16:54:51
【问题描述】:
我正在尝试重新设计遗留的 C++ 代码。
我想从项目中取出部分代码作为“.so”共享库,并通过“dlopen”动态加载它们。
我写了一个动态加载机制,可以在运行时动态加载新模块。
现在我想将现有模块与主项目分离。
例如,我从主项目中提取了模块“X”并创建了可以稍后加载的共享库,但主项目的某些部分直接使用模块 X 的类,我还不能更改它们。
我可以使用模块 X 的头文件编译项目,但链接器抛出“未定义引用”错误。
如何告诉 c++ 链接器这些类稍后会在运行时通过 dlopen 机制添加?
注意:我可以通过在“/lib”文件夹中复制创建的模块 X 的“.so”文件来链接和运行项目,并在通过“-lX”标志链接时使用它,但如果我从 /lib 中删除此文件项目启动时失败的文件夹。
【问题讨论】:
标签: g++ shared-libraries dlopen