- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经成功地在 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++ 编译我的项目之后,我尝试更改build设置,谁会相信,我设法让它运行起来了!我所做的只是将 C++ 标准库 更改为 libstdc++(GNU C++ 标准库)
。现在我不使用默认设置,即使用 libc++(支持 C++ 11 的 LLVM C++ 标准库)
。目前这似乎也适用于我的 Cocoa 应用程序,但我不知道能持续多久 :P(当使用更多 NS* 类时,我担心 LLVM 可能是必要的?)
我仍然对如何解决这个问题(无需更改build设置)或者是否不能解决这个问题非常感兴趣。
最佳答案
我正在使用 mathgl 2.1.2
并遇到了同样的问题。运行时库之间存在不匹配。 Mathgl
使用编译器默认值,但在创建新的 commas-libe 项目时,它使用 llvm
。由于字符串是通过 LLVM
在您的可执行文件中分配的,但随后传递给使用不同运行时库的 Mathgl
。当一个库中分配的指针传递给另一个库以释放时,内存操作可能会失败。也可能存在结构差异。
关于c++ - 为什么 mglData 会导致 BAD ACCESS 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13251427/
我尝试以最简单的方式使用 mglData: #include int main() { mglData y; return 0; } 并编译它: g++ *.cpp -lmgl-qt -
我已经成功地在 Mac OS 上安装了 MathGL,并设法获取 mglGraph 来为我生成示例图。然而,当我尝试使用 mglData 处理我的数据时,它崩溃并出现“EXC_BAD_ACCESS”错
我是一名优秀的程序员,十分优秀!