3
我正在尝试构建MEX模块,但是我遇到了未定义符号的运行时问题。这里是输出由于未定义符号导致的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'表示该符号位于未初始化的部分,并且它是本地对全局。
这里的问题与符号是本地的,未初始化的还是别的什么有关?
当您构建'TriMesh'时,您是否尝试链接'libISSMCore.so'?如果你显示编译步骤,这将有所帮助。 – Amro