返回

c++从另一个共享库调用共享库中的函数

发布时间:2022-05-12 00:45:48 322
# golang

我正在尝试构建、静态链接和使用两个共享库,其中一个调用另一个。例如 lib1.so 包含一个调用 lib2.so 的函数 lib2_func() 的函数 lib1_func()。

在 lib1.cpp 中,我有一个外部函数 lib1_func() 和一个用于 lib2.so 函数的标头 lib2_func()。

//lib1.cpp
#include "lib2.h"
extern "C" int lib1_func()
{
   return lib2_func();
}
//lib2.h
int lib2_func();
//lib2.cpp
extern "C" int lib2_func()
{
   return 100;
} 

我的问题是如何正确构建和链接它?截至目前,在尝试将 lib2.so 链接到 lib1.so 时,我不断收到 library not found 错误。这是将 lib2 包含在 lib1 中的正确方法吗?

到目前为止,我的命令行是先构建 lib2.so,然后尝试构建 lib1 并链接 lib2。

g++ -fpic -c lib2.cpp
g++ -shared -o lib2.so lib2.o
g++ -fpic -c lib1.cpp
g++ -shared -o lib1.so lib1.o -L. -llib2

这会导致错误

ld: library not found for -llib2

如果您对我的设置或编译器命令中的错误有任何帮助,我将不胜感激。提前谢谢大家。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像