gpt4 book ai didi

c++ - 来自 Objective-C 的 pcl::io::loadPCDFile 以 EXC_BAD_ACCESS 结尾

转载 作者:太空宇宙 更新时间:2023-11-04 14:01:36 25 4
gpt4 key购买 nike

我正在尝试使用 objective-c 应用程序中的 pcl。我有以下代码:

int i;
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
i = pcl::io::loadPCDFile("test.pcd", *cloud);

我正在创建一个带有按钮的非常简单的 Cocoa 应用程序。按下按钮时,将调用仅包含上述代码的过程。包含上述代码的文件是一个 objective-c++ 文件。

问题是,对 pcl::io::loadPCDFile 的调用以 EXC_BAD_ACCESS 结束。堆栈跟踪是

#0  0x00007fff8ecb60ef in std::string::compare(char const*) const ()
#1 0x000000010007e42d in bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/c++/4.2.1/bits/basic_string.h:2177
#2 0x00000001007bedea in pcl::PCDReader::readHeader(std::string const&, pcl::PCLPointCloud2&, Eigen::Matrix<float, 4, 1, 0, 4, 1>&, Eigen::Quaternion<float, 0>&, int&, int&, unsigned int&, int) at /Users/jkp/Development/pointclouds/pcl-pcl-1.7.0/io/src/pcd_io.cpp:133
#3 0x00000001007c2a47 in pcl::PCDReader::read(std::string const&, pcl::PCLPointCloud2&, Eigen::Matrix<float, 4, 1, 0, 4, 1>&, Eigen::Quaternion<float, 0>&, int&, int) at /Users/jkp/Development/pointclouds/pcl-pcl-1.7.0/io/src/pcd_io.cpp:675
#4 0x0000000100002e6d in int pcl::PCDReader::read<pcl::PointXYZ>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, pcl::PointCloud<pcl::PointXYZ>&, int) at /usr/local/include/pcl-1.7/pcl/io/pcd_io.h:208
#5 0x0000000100002213 in int pcl::io::loadPCDFile<pcl::PointXYZ>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, pcl::PointCloud<pcl::PointXYZ>&) at /usr/local/include/pcl-1.7/pcl/io/pcd_io.h:544
#6 0x00000001000015af in read() at /Users/jkp/Development/pointclouds/load_test/load_test/pcl_routines.cpp:18

我曾尝试将我的代码移动到 .cpp 文件中以将与 pcl 相关的代码保留在纯 C++ 中,但结果相同。

如果我调试代码并单步执行,我可以看到调用 readHeader 时,变量 file_name 似乎无效。

如果我使用 pcl 文档中的示例,它们可以正常编译和运行。

是否有我忽略的设置或明显的东西?

感谢任何帮助。

谢谢。

编辑:

(将我的答案移到一个答案。是的,我是这里的菜鸟。抱歉 :) )

最佳答案

我发现了。如果我在 XCode 中创建 C++ 项目,我会遇到同样的问题。如果我使用 cmake 生成一个 XCode 项目并在 XCode 中编译它,我没有遇到任何问题。原来我自己的项目选择了libc++作为C++标准库。如果我改为选择 Compile Default,代码就可以工作。

把这个留在这里,以防遇到同样问题的人。并添加了标准库,因为这是选择错误标准库的问题。

关于c++ - 来自 Objective-C 的 pcl::io::loadPCDFile 以 EXC_BAD_ACCESS 结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122591/

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