【发布时间】:2014-07-18 10:14:25
【问题描述】:
我在让 Matlab mex 链接到 Mac OS X Maverics 上的 C++ 标准库时遇到了一些麻烦。链接到 nvcc 生成的代码时会出现问题。
所有错误都与标准库有关:
Undefined symbols for architecture x86_64:
"std::string::c_str() const", referenced from:
...
据我所知,nvcc 和 mex 都使用相同的编译器 (gcc -> clang),并且它们都链接到 -lstdc++/-stdlib=libstdc++,但它仍然会导致一大堆链接器错误。另一方面,如果我编译有问题的指令:
gcc -O -Wl,-twolevel_namespace -undefined error -arch x86_64 -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.9 -bundle -Wl,-exported_symbols_list,/Applications/MATLAB_R2012a.app/extern/lib/maci64/mexFunction.map -o "solver_matlab.mexmaci64" solver_matlab.o "../solver_cu.o" "../solver_cu_link.o" -L/usr/local/cuda/lib -lcudart -lcublas -L/Applications/MATLAB_R2012a.app/bin/maci64 -lmx -lmex -lmat -lstdc++
在终端中使用gcc-4.8,然后代码编译正确。我不确定如何对这个问题做出正面或反面,所以如果有人有任何建议,我将非常感谢。
【问题讨论】: