我正在尝试使用swig在Python中包装c ++类。我编译了类并使用swig生成了.o
文件和包装文件,但是现在当我尝试从文件创建库时,我收到以下错误。
$g++ -lpython -dynamiclib vertex.o vertex_wrap.o -o _vertex.so
Undefined symbols for architecture x86_64:
"Cell::removeVertex(Vertex*)", referenced from:
Vertex::kill(Vertex*) in vertex.o
Vertex::~Vertex() in vertex.o
Vertex::~Vertex() in vertex.o
"Cell::addVertex(Vertex*)", referenced from:
Vertex::make(Cell*) in vertex.o
Vertex::Vertex(Cell*) in vertex.o
Vertex::Vertex(Cell*) in vertex.o
ld: symbol(s) not found for architecture x86_64
答案 0 :(得分:1)
Vertex
拨打Cell
(可能,Vertex
通常包含在Cell
中),即Cell::removeVertex(Vertex*)
和Cell::addVertex(Vertex*)
}。这些函数必须在其他一些源文件中定义(也许cell.cpp
,只是猜测)。
所以你需要编译源文件cell.cpp
和链接cell.o
(如果有更多依赖项,可能还有其他源文件)
顺便说一句,这与SWIG或python包装无关。