PCLビジュアライザーのチュートリアルをいくつか試してみましたが、それらを組み合わせようとしました。基本的に、3D点群を生成し、PCLビジュアライザーを使用して表示します。プロジェクトは成功し、それは機能します。しかし、プログラムを終了するために 'e'、 'q'を押すか、右上隅の閉じるボタンを押すと、Eigen/src/Core/util/Memory.h行241から例外がスローされます。 どんな助けや説明もとても感謝しています。ありがとう。PCLビジュアライザー - ビジュアライザーウィンドウを終了するときにEigenからスローされました
私はアイゲン3.2.8、MSVC-12.0、64ビット、ブーストバージョン1.61、PCLバージョン1.8、VTKのバージョン7.1を使用して構築してい
これはMemory.h
/** \internal Frees memory allocated with aligned_malloc. */
inline void aligned_free(void *ptr)
{
#if !EIGEN_ALIGN
std::free(ptr);
#elif EIGEN_MALLOC_ALREADY_ALIGNED
std::free(ptr); // Line 241, exception from here
#elif EIGEN_HAS_POSIX_MEMALIGN
std::free(ptr);
#elif EIGEN_HAS_MM_MALLOC
_mm_free(ptr);
#elif defined(_MSC_VER) && (!defined(_WIN32_WCE))
_aligned_free(ptr);
#else
handmade_aligned_free(ptr);
#endif
}
からの抜粋ですこれは2回解放される何らかのメモリロケーションかもしれませんか?
これは私の「Hello World」のコードです:
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
int main(int argc, char** argv) {
pcl::PointCloud<pcl::PointXYZRGB> cloud;
// Fill in the cloud data
cloud.width = 10000;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize(cloud.width * cloud.height);
for (size_t i = 0; i < cloud.points.size(); ++i) {
cloud.points[i].x = 1024 * rand()/(RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand()/(RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * rand()/(RAND_MAX + 1.0f);
cloud.points[i].r = 256 * rand()/(RAND_MAX + 1.0f);
cloud.points[i].g = 256 * rand()/(RAND_MAX + 1.0f);
cloud.points[i].b = 256 * rand()/(RAND_MAX + 1.0f);
}
//pcl::io::savePCDFileASCII("testpcd.pcd", cloud);
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_ptr(&cloud);
//visualiser
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
viewer->setBackgroundColor(0, 0, 0);
viewer->addPointCloud<pcl::PointXYZRGB>(cloud_ptr, "sample cloud");
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");
viewer->addCoordinateSystem(1.0);
viewer->initCameraParameters();
//viewer->resetCameraViewpoint("sample cloud");
while (!viewer->wasStopped())
{
viewer->spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(100000));
}
return (0);
}
この問題はよく分かります。他のヘッダの前に '#include'を入れてみることはできますか? –
mindriot
msvc-12.0、Windows、x64。 私は[ここ](http://stackoverflow.com/questions/6365058/alternative-unistd-h-header-file-for-visual-studio-2010)によると ''を試しました。これまでのところ、私はまだ同じ問題を抱えています –
Soon
おっと、待って、心配しないでください。あなたの問題は他のものです、私は答えを書くでしょう。 – mindriot