3

我正在尝试构建 MEX 模块,但我遇到了未定义符号的运行时问题。这是输出

Invalid MEX-file '/home/glperez/issm/trunk-jpl/lib/TriMesh.mexa64':
/home/glperez/issm/trunk-jpl/lib/libISSMCore.so: undefined symbol: _ZN14ToolkitOptions14toolkitoptionsE

Error in triangle (line 40)
[elements,x,y,segments,segmentmarkers]=TriMesh(domainname,riftname,area);

Error in test101 (line 1)
md=triangle(model(),'../Exp/Square.exp',50000.);

检查“libISSMCore.so”中的符号确认未定义符号

$ nm ./lib/libISSMCore.so | grep 'toolkit'
U _ZN14ToolkitOptions14toolkitoptionsE

但是,该符号出现在“TriMesh.mexa64”中:

$ nm ./lib/TriMesh.mexa64 | grep 'toolkit'
00000000002391b8 b _ZN14ToolkitOptions14toolkitoptionsE

据我了解,小写的“b”表示该符号位于未初始化的部分中,并且它是本地与全局的。

这里的问题与符号是本地的、未初始化的还是其他有关?

4

1 回答 1

1

据我了解,小写的“b”表示该符号位于未初始化的部分中,并且它是本地的

该符号是本地的,并且在零初始化(又名 BSS)部分。

是的,问题在于它是本地的,即在TriMesh.mexa64图书馆之外无法访问。

于 2013-08-07T03:30:51.347 回答