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-无法解析的外部符号的主要内容,如果未能解决你的问题,请参考以下文章

mfc error LNK2001:无法解析的外部符号。

error LNK2001: 无法解析的外部符号

vs2015编译ffmpeg 出现错误rtmp.lib(rtmp.obj) : error LNK2001: 无法解析的外部符号 ___iob_func

LNK2001: 无法解析的外部符号的几种情况

VS2008 VC++/MFC 出错LNK2001与1120

error LNK2001: 无法解析的外部符号