3

我已经成功地在 Mac OS 上安装了 MathGL,并设法让mglGraph我生成示例图。然而,当我尝试使用mglData它来处理我的数据时,它会因“EXC_BAD_ACCESS”错误而崩溃。为什么?有什么我没有做的事情需要做吗?

我用 cmake、make 和 make install 安装了 mathgl(为了安全起见,使用 sudo)。然后我将/usr/local/include/usr/local/lib路径添加到项目中,并将libmgl.dyliblibmgl-wnd.dylib引用添加到项目中。有什么我错过了吗?我找不到其他人有错误(好吧,我发现了许多错误的访问错误,但没有一个是由 mglData 引起的)。一旦我试图构造一个 mglData 实例,错误就会弹出,所以其中任何一个都会触发异常:


mglData *data = new mglData();
mglData data;
etc...

编辑

所以,这是我编译但崩溃的代码的基本内容:


#include iostream
#include mgl2/mgl.h

int main(int argc, const char * argv[])
{
    mglData y;   
    return 0;
}

线程崩溃时的调用栈是:

线程调用栈

所有变量的值是这样的:

变量值


半解决 得到它运行

在能够使用 g++ 编译我的项目后,我尝试更改构建设置,谁会相信它,我设法让它运行!我所做的只是将C++ 标准库更改为libstdc++ (GNU C++ standard library). 现在我没有使用默认值,即使用libc++ (LLVM C++ standard library with C++ 11 support). 目前这似乎也适用于我的 Cocoa 应用程序,但我不知道多久:P(当使用更多 NS* 类时,我担心 LLVM 可能是必要的?)

我仍然对如何解决此问题(无需更改构建设置)或是否不能解决非常感兴趣。

4

1 回答 1

0

我正在使用mathgl 2.1.2并遇到同样的问题。运行时库之间存在不匹配。Mathgl使用编译器默认值,但在创建新的 commas-libe 项目时,它使用llvm. 由于字符串是通过 分配在您的可执行文件中的LLVM,但随后传递给Mathgl使用不同的运行时库。当一个库中分配的指针传递给另一个库以释放时,内存操作可能会失败。也可能存在结构差异。

于 2013-03-03T19:35:51.920 回答