运行vs程序的时候,报错严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 "__declspec(dllimport) public: void __cdecl PointCloudFilter::setptClouds(struct LAS_POINT *)" (__imp_?setptClouds@PointCloudFilter@@QEAAXPEAULAS_POINT@@@Z),该符号在函数 "private: void __cdecl PointCloudFilters::doAction(void)" (?doAction@PointCloudFilters@@AEAAXXZ) 中被引用,如下图所示:

  报这个错误一般是因为使用了一些未定义或者没找到定义的函数或者变量等等。解决的方法通常有以下几种:

  1. 如果是在写代码阶段就报错了(当然如果是这种情况,报错的内容也就不是这样的了,这里只是顺便提一下),那一般是因为包含目录没有设置对,导致程序无法找到外部库的函数定义;而如果是自定义的函数找不到,则需要检查一下函数的拼写是否正确,或者函数在cpp中实现时有没有在函数名前面加上类的定义域(即类名::)。
  2. 如果是运行时报错,常见的原因是你引用了某个库的函数,然后也正确添加了它的头文件路径,vs在写代码阶段可以找到这个函数的定义,但是,由于你没有添加或者正确设置这个库的lib或者dll路径的话,那么vs就会在运行时候报错无法解析的外部符号。库目录(lib文件目录)是在项目->属性->配置属性->VC++目录->库目录里进行添加,如下图所示:
  3. 前两种情况是一般的情况,但是如果不是前两种情况的话,那就有可能和宏定义有关了,这也是这篇博客主要想说明的情况。从一开始贴上来的报错信息中可以看出,错误出现在PointCloudFilter类这里。于是,我们打开这个类的头文件,可以在开头的地方发现几行预处理代码,如下图所示。这是一个if_else的语句,大致意思是,如果定义了DLL_IMPLEMENT,则将DLL_API这个宏的值设置为输出dll文件,否则设置为输入dll文件。而这里,这个工程是要输出dll文件的,因此,我们需要在这些代码运行之前先定义好DLL_IMPLEMENT

      解决办法就是,打开项目->属性->配置属性->C/C++->预处理器,然后在预处理器栏目这里加上DLL_IMPLEMENT这个宏,如下图所示。确认保存后,再运行程序,就不会报错了。
  4. 最后还提一个非常隐蔽且常常被人忽视的情况。那就是你需要确认一下你在属性页的程序配置平台和实际运行的配置平台是一致的,如下图所示:
  5. 其他一些特殊问题的解决方案:一个解决方案中包含多个项目且它们之间存在相互引用的情况,opencv imwrite所需的引用,cloudcompare无法找到ccDefaultPluginInterface类。
  6. 补充一点来自评论区的隐秘的错误:检查一下你的main函数名字拼的对不对,可别写成了mian。
  7. 再补充一点来自评论区的错误:只声明了析构函数却没有定义

vs报错“错误 LNK2019 无法解析的外部符号”的几种原因及解决方案相关推荐

  1. [MFC]: 找不到标识符“xxxx“,或者vs报错“错误 LNK2019 无法解析的外部符号”

    今天在编写MFC的时候,写一个AES128的加密C函数,发现我的函数都写好了,并在h文件中已经声明了,但是在dlg.cpp中包含了这个AES128.h的时候,发现总是提示找不到标识符"xxx ...

  2. 错误 LNK2019 无法解析的外部符号 “__declspec(dllimport) public: int __thiscall osg::Referenced::ref(void)const “

    前言 错误 LNK2019 无法解析的外部符号 "__declspec(dllimport) public: int __thiscall osg::Referenced::ref(void ...

  3. Qt 错误: LNK2019: 无法解析的外部符号 原因及解决办法

    Qt 错误: LNK2019: 无法解析的外部符号 原因及解决办法 删除Qt中的一些用不到的函数或者添加一个新的.ui窗口的时候,我遇到了这个LINK2019无法解析的外部符号错误,网上查了半天可算解 ...

  4. 链接器工具错误错误 LNK2019 无法解析的外部符号

    错误 LNK2019 无法解析的外部符号 对于这个问题,不知道是版本问题还是添加依赖库少了的问题,也可能是用cmake编译cpp文件时,写的CMakeLists.txt有点小问题,其他的头文件编译不会 ...

  5. 错误 LNK2019 无法解析的外部符号 “public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_OutputArray

    错误 LNK2019 无法解析的外部符号 "public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_Output ...

  6. 错误 LNK2019 无法解析的外部符号 main,函数 “int __cdecl invoke_main(void)“ (?invoke_main@@YAHXZ)

    项目场景: 在C++调试OnnxRuntime推理模型过程中遇到错误 问题描述 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 main,函数 " ...

  7. 错误 LNK2019 无法解析的外部符号 “public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard::_OutputArray

    编译ORM_SLAM3中的DBoW2 环境:win10+vs2017,DEBUG x64 opencv为3.1.0 出现错误: 错误    LNK2019    无法解析的外部符号 "pub ...

  8. VS2012编译文件报错——error LNK2001: 无法解析的外部符号 __imp___CrtDbgReportW

    错入显示如: 1>  正在生成代码... 1>SurfDescriptor.obj : error LNK2001: 无法解析的外部符号 __imp___CrtDbgReportW 1&g ...

  9. “error LNK2019: 无法解析的外部符号”的几种可能原因

    1.前言 error LNK2019: 无法解析的外部符号这个错之前见过很多次,能知道最根本的原因在于链接过程中没有搜索到程序用到的库文件,即*.lib. 笔记本重装了系统,有32Bit升到64Bit ...

最新文章

  1. 使用卷积神经网络预防疲劳驾驶事故
  2. 立创eda封装转cadence_立创EDA05、检查封装、生成PCB
  3. JVM——虚拟机的简介【摘录】
  4. 图像处理作业 第8次
  5. 如何识别一个人是web前端程序员
  6. ZooKeeper观察员--ZooKeeperObservers
  7. 数据科学 IPython 笔记本 8.5 简单的散点图
  8. 使用方法 ros_大白菜的ROS笔记(8)(创建TF广播和监听,内容很多,细节满满)...
  9. 软件开发中的成本意识
  10. Hack_All_The_Things——探索IoT相关的攻击研究和渗透测试
  11. 一元云购指定中奖版源码(开源+PC+移动端)
  12. ZXing条码扫描-竖屏解决方案
  13. git/icode操作记录
  14. 脸上经常长青春痘痘的青年应该多吃的食物
  15. win10更新助手_快升级!win10精简版不到10G,比win7还干净流畅,无需更新!
  16. ES文件浏览器 WIFI 查看电脑文件怎么弄
  17. 免密钥登录脚本(转载)
  18. python当前时间加一分钟_Python实现的当前时间多加一天、一小时、一分钟操作示例...
  19. 如何反编译 cocos creator 生成 的jsc文件/反编译jsc文件(一)
  20. 【HTML + CSS】模仿腾讯云页面——初步实现

热门文章

  1. 如何查看python源代码_查看“使用python做图像处理”的源代码
  2. Pre-training Enhanced Spatial-temporal Graph Neural Network for Multivariate Time Series Forecasting
  3. mysql中 or的使用方法_MySQL中or语句的使用方法
  4. 广州华立技师学院计算机设计,广东省华立技师学院(广东省华立高级技工学校)...
  5. 关闭shell_exec php,使用shell_exec从PHP执行shell命令
  6. 管理类联考-英语 : 基础 [ 六 ]
  7. JavaScript 上传插件plupload
  8. Linux中环境变量PATH的作用
  9. Java基础-----计算时间间隔
  10. wxml语法:循环语法