滑动错误:未定义符号

2024-10-01 09:16:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我在swig上遇到了麻烦,对我来说,它似乎在说我代码中的一个数据成员是一个未定义的符号。我在网上找到了如何修复函数的答案,但这让我很困惑。在

我的错误是:

Traceback (most recent call last):
  File "./test1.py", line 5, in <module>
    from volumes import *
  File "/scratch/rjkern/projects/RJKERN_volrend/scripts/volumes.py", line 26, in <module>
    _volumes = swig_import_helper()
  File "/scratch/rjkern/projects/RJKERN_volrend/scripts/volumes.py", line 22, in swig_import_helper
    _mod = imp.load_module('_volumes', fp, pathname, description)
ImportError: /scratch/rjkern/projects/RJKERN_volrend/scripts/_volumes.so: undefined symbol: _ZN13ConstantColorC1ESt10shared_ptrI5ColorE

这是我的密码:

^{pr2}$

以及:

/*
 *  ColorOperations.cpp
 */

#include "ColorOperations.h"

ConstantColor::ConstantColor(const shared_ptr<Color>& _color){
    color = _color;
}

const Color ConstantColor::eval(const Vector& P)const{
    return *color;
}

Tags: inpyimportlinefilecolorswigprojects
1条回答
网友
1楼 · 发布于 2024-10-01 09:16:48

我们可以用c++filt来分解符号名:

c++filt _ZN13ConstantColorC1ESt10shared_ptrI5ColorE

结果是:

^{pr2}$

也就是说,你的构造函数需要一个shared_ptr。不过,只报告第一个未解析的符号。在

注意这里的不是一个引用,但是您的构造函数看起来像是引用。您的.i或其他文件中可能存在的打字错误可以解释为什么某些文件认为存在非引用版本。在

另一种可能的解释是,您已经构建了包装器(即编译的卷)_包装.cxx)指向共享对象,但不链接已编译的颜色操作.cpp对那个物体。在

或者,如果你让链接它,你linked it in the wrong order and thus it was judged as not needed by the linker。如果是这种情况,请确保在链接器命令行中最后使用-lcolour_library/colour_library.a/ColorOperatios.o。(有人猜测这个名字)。在

相关问题 更多 >