我已成功设法在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;
}
崩溃时线程的调用堆栈是:
所有变量的值都是这样的:
半解决 让它运行
在用g ++编译我的项目之后,我尝试更改构建设置,谁会相信它,我设法让它运行!我所做的只是将 C ++标准库更改为libstdc++ (GNU C++ standard library)
。现在我没有使用默认值,即使用libc++ (LLVM C++ standard library with C++ 11 support)
。目前这似乎也适用于我的Cocoa应用程序,但我不知道多久:P(当使用更多的NS *类时,我担心LLVM可能是必要的吗?)
我仍然对如何解决此问题非常感兴趣(无需更改构建设置)或是否不能。
答案 0 :(得分:0)
我正在使用mathgl 2.1.2
并遇到同样的问题。运行时库之间存在不匹配。 Mathgl
使用编译器默认,但在创建新的commas-libe项目时,它使用llvm
。由于字符串是通过LLVM
在您的可执行文件中分配的,但随后传递给使用不同运行时库的Mathgl
。
当一个库中分配的指针传递给另一个库时,内存操作可能会失败。
也可能存在结构差异。