我在matlab上遇到一个名为“Symbol not found”的错误。错误消息在下面。
Symbol not found: __ZNKSt5ctypeIcE13_M_widen_initEv
Referenced from: blabla/lib/buildW.mexmaci64
Expected in: /usr/lib/libstdc++.6.0.9.dylib
像我一样有很多问题,但我从来没有找到这个问题的解决方案。前面的线程提到了更新的clang和使用的clang之间的冲突。
以下是关于类似问题的问题的例子。
我目前安装了Xcode 9.2。
在matlab中,我使用MacOSX10.13.sdk,如下所示。
>> edit ([matlabroot '/bin/maci64/mexopts/clang++_maci64.xml'])
...
...
<dirExists name="$$/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk" />
<cmdReturns name="find $$ -name MacOSX10.13.sdk" />
另外,我发现“/ usr / lib”中有三个文件
/usr/lib/libstdc++.6.0.9.dylib
/usr/lib/libstdc++.6.dylib
/usr/lib/libstdc++.dylib
任何人都可以帮助我吗?
答案 0 :(得分:1)
符号__ZNKSt5ctypeIcE13_M_widen_initEv
(解码std::ctype<char>::_M_widen_init() const
)在libstdc++.dylib
中定义,但如果您执行
nm /usr/lib/libstdc++.dylib | fgrep __ZNKSt5ctypeIcE13_M_widen_initEv
你会得到
0000000000006a14 t __ZNKSt5ctypeIcE13_M_widen_initEv
结果。 t
表示它在TEXT部分中定义,但它是 local 符号,无法从库外引用。
Xcode中的Clang使用
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib/libstdc++.tbd
用于链接而不是/usr/lib/libstdc++.dylib
。这是一个人类可读文件,仅包含libstdc++.dylib
中公共符号的名称。由于上面的符号是私有的,因此未列在.tbd文件中。