【发布时间】:2018-09-29 13:27:27
【问题描述】:
我有以下问题:
我有两个独立的 c++ 项目,并且想在另一个中使用其中一个的某些功能。我在 Linux 上使用 g++ 进行编译。
我决定通过在项目之外创建一个共享库来使用这些函数来做到这一点。我将 -fPIC 添加到 Makefile 中的编译器标志,然后创建了一个这样的共享库:
g++ -shared -Wl,-soname,libmyproject.so.1 -o libmyproject.so a.o b.o c.o -lc
然后我简单地将 .so 文件和头文件复制到新项目的(父)目录中,并将以下内容添加到其 Makefile 中:
致 LIBS:
-L/../external_proj/libmyproject.so
致 CXXFLAGS:
-I/../external_proj
然后我在目标项目代码中#include 适当的头文件并尝试从原始项目中调用某些函数。但是,当我编译目标项目时,我收到导入函数的错误“未定义引用”。
然后我的问题是:我在这个设置中缺少什么吗?为了导出我想要使用的功能,是否可能需要将某些内容添加到原始项目的标题中?
我应该注意到这是我第一次尝试以这种方式使用共享库。谢谢。
【问题讨论】:
标签: c++ shared-libraries