PCL测试程序出现LNK2001-无法解析的外部符号
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PCL测试程序出现LNK2001-无法解析的外部符号相关的知识,希望对你有一定的参考价值。
先安装pcl 1.6.0;安装的时候选择添加PCL环境变量;
安装目录;
看一下安装的组件;这些是pcl的类库;
pcl的类库;
pcl带的第三方库;boost是C++方面的;VTK是显示点云用的;其他尚不清楚;
安装完成后用set命令看一下环境变量;已经有了;
目前是VC++2012,新建一个空项目;添加项目的包含目录;
添加库目录;
附加依赖项;各个lib文件;
新建一个cpp文件,
#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
int user_data;
void viewerOneOff (pcl::visualization::PCLVisualizer& viewer)
viewer.setBackgroundColor (1.0, 0.5, 1.0);
pcl::PointXYZ o;
o.x = 1.0;
o.y = 0;
o.z = 0;
viewer.addSphere (o, 0.25, "sphere", 0);
std::cout << "i only run once" << std::endl;
void viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
static unsigned count = 0;
std::stringstream ss;
ss << "Once per viewer loop: " << count++;
viewer.removeShape ("text", 0);
viewer.addText (ss.str(), 200, 300, "text", 0);
user_data++;
int main ()
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("test.pcd", *cloud);
pcl::visualization::CloudViewer viewer("Cloud Viewer");
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce (viewerOneOff);
viewer.runOnVisualizationThread (viewerPsycho);
while (!viewer.wasStopped ())
user_data++;
return 0;
构建一下;出现下图错误;看一下提示错误的文件名是xxxvc110xxx;
前面输入的都是xxxvc100xxx;安装的boost目录下面都是xxxvc100xxx;
改下图的地方都是差不多一样的错;
看一下弹出一个提示文件;使用boost时,它应该是自己根据VC的版本去找使用boost库的哪个版本;使用的VS是2012,需要使用xxxVC110xxx的boost库;
换成VS2010;
代码和配置同前;再试;出现下图错误;转换到COFF期间失败;
在资源管理器输入C:\\Windows\\winsxs\\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7601.17514_none_ba1c770af0b2031b;
如下图,有一个cvtres.exe;
用上面的替换掉VS2010的VC/bin目录下的同名文件;
再构建;此错误消失;
但是出现多个LNK2019;看了一下lib目录的配置应没问题;
重新写一个最简程序;并把pcl的lib在代码开始之前用comment引入;
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#pragma comment(lib,"pcl_apps_debug.lib")
#pragma comment(lib,"pcl_common_debug.lib")
#pragma comment(lib,"pcl_features_debug.lib")
#pragma comment(lib,"pcl_filters_debug.lib")
#pragma comment(lib,"pcl_io_debug.lib")
#pragma comment(lib,"pcl_io_ply_debug.lib")
#pragma comment(lib,"pcl_kdtree_debug.lib")
#pragma comment(lib,"pcl_keypoints_debug.lib")
#pragma comment(lib,"pcl_octree_debug.lib")
#pragma comment(lib,"pcl_registration_debug.lib")
#pragma comment(lib,"pcl_sample_consensus_debug.lib")
#pragma comment(lib,"pcl_search_debug.lib")
#pragma comment(lib,"pcl_segmentation_debug.lib")
#pragma comment(lib,"pcl_surface_debug.lib")
#pragma comment(lib,"pcl_tracking_debug.lib")
#pragma comment(lib,"pcl_visualization_debug.lib")
int main(int argc,char** argv)
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("test.pcd", *cloud);
return(0);
代码只有2句;第一句定义指针型变量cloud; 第二句读取点云文件;
再构建;
还是有3个链接错误;下回再整;
以上是关于PCL测试程序出现LNK2001-无法解析的外部符号的主要内容,如果未能解决你的问题,请参考以下文章
vs2015编译ffmpeg 出现错误rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 ___iob_func