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

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

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

所有变量的值是这样的:



半解决的使它运行

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

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

最佳答案

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

关于c++ - 为什么mglData导致BAD ACCESS异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13251427/

10-09 05:36