为什么mglData会导致BAD ACCESS异常?

时间:2012-11-06 12:49:41

标签: c++ xcode macos exc-bad-access mathgl

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

我用cmake,make和make install安装了mathgl(使用sudo是安全的)。然后我将 / usr / local / include / usr / local / lib 路径添加到项目中并添加了 libmgl.dylib 和< em> libmgl-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;
}

崩溃时线程的调用堆栈是:

Thread call stack

所有变量的值都是这样的:

Variable values


半解决 让它运行

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

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

1 个答案:

答案 0 :(得分:0)

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