我在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;
}
我们可以用
c++filt
来分解符号名:结果是:
^{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
。(有人猜测这个名字)。在相关问题 更多 >
编程相关推荐