gpt4 book ai didi

c++ - PCL loadPCDFile() 错误

转载 作者:行者123 更新时间:2023-11-30 05:31:47 24 4
gpt4 key购买 nike

一旦我成功地使用 Visual C++ 2013 x64 编译了 PCL,我就全神贯注地尝试调试以下错误。使用 pcl::io::loadPCDFile() 加载 .pcd 文件时,出现调试断言失败,随后出现一些访问冲突错误。

std::string fileName = "E:/C PROJECTS/models/generated.pcd";

target_cloud.reset(new Cloud());

if (pcl::io::loadPCDFile(model_filename_, *target_cloud) == -1) //* load the file
{
PCL_ERROR("Couldn't read .pcd file \n");
return (-1);
}

enter image description here

enter image description here

最佳答案

这个错误是一个(几乎)肯定的信号,表明您正在将两个不同的 CRT(C 运行时库)链接到您的程序。每个 CRT 都有自己的内存分配堆。一个 CRT 正在释放一些东西,而实际上是由另一个 CRT 分配的,当释放的 CRT 试图将释放的内存添加到它自己的堆时,发现它不属于那里,从而导致断言。

可能,您的 PCL 被编译为使用与您的项目正在使用的 CRT 不同的 CRT。打开 PCL 解决方案,打开项目设置,并检查 C/C++ -> 代码生成 -> 运行时库中的设置。然后在您自己项目的解决方案中执行相同的操作,检查它们是否匹配。

您还需要使用相同版本的 Visual Studio 编译 PCL 和您的项目(因为每个新版本似乎都带有一组新的 CRT...唉)。

作为最后的手段,您还可以检查“输出”窗口并注意正在加载的 DLL,并查看是否可以发现多个不兼容的 CRT。您可以在以下位置找到有关文件名的信息:https://support.microsoft.com/en-us/kb/140584或使用谷歌。

如果您真的想为您的项目使用特定的 CRT,则必须重新编译 PCL 才能使用您想要的 CRT。

关于c++ - PCL loadPCDFile() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35403489/

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