未定义引用\`__gxx_personality_seh0'和collect2.exe:错误:ld返回1退出状态

时间:2016-01-13 08:30:20

标签: c++ gcc mingw wolfram-mathematica

它本质上是一个C ++和编译器问题。但我将描述这种错误是如何发生的。

我正在使用C ++和Eigen library编写mathematica librarylink函数,如下所示

libsource = "#include \"WolframLibrary.h\"
  #include <Eigen/Dense>
  EXTERN_C DLLEXPORT int donothing(WolframLibraryData libData,mint \
Argc,MArgument*Args,MArgument Res) {
  using namespace std;
  using namespace Eigen;
  Matrix2d a;
  a<<1,2,3,4;
  return LIBRARY_NO_ERROR;}";

并使用

加载它
LibraryFunctionUnload[donothing];
libnew = CreateLibrary[libsource, "donothing", "Debug" -> True, 
   "CompileOptions" -> "-x c++"];
donothing = LibraryFunctionLoad[libnew, "donothing", {}, "Void"];

我启用了debug,mathematica输出shell编译结果如下:

C:\Users\qq\AppData\Roaming\Mathematica\SystemFiles\LibraryResources\W\
indows-x86-64\Working-lenovo-qq-5144-7404-36>C:\mingw-w64\mingw64\bin\
\x86_64-w64-mingw32-gcc-5.2.0.exe -shared -o \
"C:\Users\qq\AppData\Roaming\Mathematica\SystemFiles\LibraryResources\
\Windows-x86-64\Working-lenovo-qq-5144-7404-36\donothing.dll" -g -x c++ \
 -I"C:\Program Files\Wolfram \
Research\Mathematica\10.3\SystemFiles\IncludeFiles\C" -I"C:\Program \
Files\Wolfram \
Research\Mathematica\10.3\SystemFiles\Links\MathLink\DeveloperKit\W\
indows-x86-64\CompilerAdditions\mldev64\include" "C:\Users\qq\AppData\
\Roaming\Mathematica\SystemFiles\LibraryResources\Windows-x86-64\W\
orking-lenovo-qq-5144-7404-36\donothing.c"  -L"C:\Program \
Files\Wolfram \
Research\Mathematica\10.3\SystemFiles\Links\MathLink\DeveloperKit\W\
indows-x86-64\CompilerAdditions\mldev64\lib" -L"C:\Program \
Files\Wolfram \
Research\Mathematica\10.3\SystemFiles\Libraries\Windows-x86-64"    \
2>&1 
R:\temp\cc9bBS4s.o:donothing.c:(.data+0x0): undefined reference to \
`__gxx_personality_seh0'
R:\temp\cc9bBS4s.o:donothing.c:(.xdata+0x10): undefined reference to \
`__gxx_personality_seh0'
collect2.exe: error: ld returned 1 exit status

昨天,我运行相同的代码,它完美无缺。现在,我不知道出了什么问题。

同时,没有Eigen库的所有librarylink都运行良好。并且Eigen库没有损坏,因为我可以使用Eigen编译.cpp文件而没有问题。

如何解决这个问题?

更新

我不知道为什么我的问题被标记为重复而没有任何评论!我看了那个链接,但它并没有解决我的问题!我已经说过&#34;昨天它运作良好&#34;。我已经使用了选项&#34; -x c ++&#34;,我也试过&#34; -x c ++ -lstdc ++&#34;错误为__gxx_personality_seh0而不是___gxx_personality_v0

0 个答案:

没有答案