gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:18:39 24 4
gpt4 key购买 nike

我已经成功地在 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++ 编译我的项目之后,我尝试更改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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com