vs报错“错误 LNK2019 无法解析的外部符号”的几种原因及解决方案[通俗易懂]

vs报错“错误 LNK2019 无法解析的外部符号”的几种原因及解决方案[通俗易懂]  运行vs程序的时候,报错严重性 代码 说明 项目 文件 行 禁止显示状态错误 LNK2019 无法解析的外部符号”__declspec(dllimport)public:void__cdeclPointCloudFilter::setptClouds(structLAS_POINT*)”(__imp_?setptClouds@PointCloudFilter@@QEAAXPEAULAS_POINT@@@Z),该符号在函数”private:void__cdeclPointClou

大家好,又见面了,我是你们的朋友全栈君。

  运行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类
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153450.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何准备技术串讲活动_技术准备包括哪些

    如何准备技术串讲活动_技术准备包括哪些如何准备技术串讲?

    2025年6月15日
    0
  • 回归分析详解及matlab实现[通俗易懂]

    回归分析详解及matlab实现[通俗易懂] 回归分析方法 想要资源的请关注公众号:在一起的足球自动获取资源和数十种经典算法,帮助各位提升自己之前留的是自己的qq号感觉好多资源都不能让大家自行选择本着开源的精神,在公众号挂了百度云链接,这样晚上就不用被吵醒了当人们对研究对象的内在特性和各因素间的关系有比较充分的认识时,一般用机理分析方法建立数学模型。如果由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,…

    2025年7月20日
    1
  • ipset基本用法和保存配置「建议收藏」

    ipset基本用法和保存配置「建议收藏」ipset基本用法ipset基本用法需要保存配置,不然重启会失效ipset基本用法1.创建ipset集合创建一个新的ipset集合:ipsetcreateSETNAMETYPENAMEipsetcreatebbhash:ip2.向集合中添加条目ipsetaddbb2.2.2.2ipsetaddbb192.168.10.21-192.168.10.313.查询条目ipsetlistipsetlistaa4.检查目标ip是否在ipset集合中ipsette

    2022年9月28日
    1
  • Mahout-Pearson correlation的实现

    Mahout-Pearson correlation的实现

    2022年1月23日
    38
  • java dom4j解析xml 对象_Java XML解析 – 利用DOM4j解析XML

    java dom4j解析xml 对象_Java XML解析 – 利用DOM4j解析XMLJavaXML解析-利用DOM4j解析XMLdom4j是一个简单的开源库,用于处理XML、XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。dom4j是目前在xml解析方面是最优秀的(Hibernate、Sun的JAXM也都使用dom4j来解析XML),它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XMLS…

    2022年6月21日
    27
  • django动态路由_网线无线转换器怎么用

    django动态路由_网线无线转换器怎么用自定义路径转换器有时候上面的内置的url转换器并不能满足我们的需求,因此django给我们提供了一个接口可以让我们自己定义自己的url转换器django内置的路径转换器源码解析在我们自定义路由转

    2022年7月28日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号