我有一些 C++ 代码,为此我创建了一个 .so 文件。
我的目标是在 python 脚本中加载这个 .so 文件。
为了公开 C++ 方法,我为它们创建了一个 C 包装方法并公开了 C 方法。
但是,当尝试在 python 脚本中加载 .so 文件时,它给了我一个未定义的符号错误。
这些错误适用于某些 C++ 类内部使用的方法,并且不会暴露在 .so 文件之外。(nm -C -u .so)
- 创建 .so 文件时不解析名称吗?
- 解决 .so 文件中未定义符号的最佳方法是什么。
例如:
C++ :
class myclass {
public:
void func1(int _i);
int getval();
};
C wrapper :
extern "C" int getval_w();
int getval_w() {
myclass obj;
return obj.getval();
}
因此,当我在 .so 文件中编译此代码并将其加载到 python 脚本中时,我收到如下错误:未定义的符号:“func1 的损坏名称”