【发布时间】:2014-02-12 12:29:50
【问题描述】:
我想在我的代码中的两个源文件中使用pcl::io::savePNGFile。
只要我在第二个源文件中包含所需的包含
# include <pcl/io/png_io.h>
项目无法编译。
错误信息是:
/usr/include/pcl-1.7/pcl/io/png_io.h:86: multiple definition of `pcl::io::saveRgbPNGFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char const*, int, int)'
我将把函数包装在一个类中,以便在项目中只包含一次。但我认为这不是最好的方法。我做错了什么吗?有更好的解决方案吗?
谢谢!
编辑
最后我实现了一个问答解决方案并封装了函数(仅适用于普通云)
cloudsaver.h
#ifndef CLOUDSAVER_H
#define CLOUDSAVER_H
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <string>
class CloudSaver
{
public:
CloudSaver();
void saveCloudToPNG(const std::string & fileName, const pcl::PointCloud<pcl::PointXYZRGBNormal>& cl );
};
#endif // CLOUDSAVER_H
cloudsaver.cpp
#include "cloudsaver.h"
# include <pcl/io/png_io.h>
CloudSaver::CloudSaver()
{
}
void CloudSaver::saveCloudToPNG(const std::string & fileName, const pcl::PointCloud<pcl::PointXYZRGBNormal>& cl )
{
pcl::io::savePNGFile<pcl::PointXYZRGBNormal>(fileName, cl );
}
但我还是很好奇,如何正确地做到这一点。
【问题讨论】: