error LNK2019: 无法解析的外部符号的几种情况探讨[通俗易懂]

error LNK2019: 无法解析的外部符号的几种情况探讨[通俗易懂]errorLNK2019:无法解析的外部符号的几种情况探讨。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

       error LNK2019: 无法解析的外部符号,这种问题在windows C++编程中,很多人应该都遇到过,那出现这个问题一般有哪些情况呢?

       情况一,就是没有引入相应的lib库。这个情况是最容易想到的。对于lib库是要链接到exe程序中的,如果在链接的时候,找不到函数对应的符号所在的lib,那就会报error LNK2019: 无法解析的外部符号,有的时候还会提示,在什么地方调用了,如下所示:

error LNK2019: 无法解析的外部符号 _XXXXX,该符号在函数 _FFFFF中被引用。

如果是这种情况,只需要将相应的lib加入到工程中编译就可以了。

       情况二,在一个工程中,有很多个子工程,然后,每个工程中都有一些公共的头文件,比如define.h,error.h等,当把这些合到一个工程中编译的时候,可能会把每个子工程的include目录放在附加包含目录中,这样编译的时候就有可能引用了不是它自己的文件,比如:

project/demo1/include

project/demo2/include

在这2个目录下都有error.h,然后在附件包含目录中,包含这2个目录。

而在引用的时候都是这样写:

#include <error.h>

这样在链接的时候,就存在不确定性。可能会出现,demo2引用demo1的error.h的可能。这种情况是不好查的。最近在整合一个项目就遇到这种情况,有20多个工程,都有几个相同名字的文件,编译的时候,不报错,因为那个头文件可以引用到,引用的是别的工程的,这样就找不到它的实现文件。

这个情况解决方法是,更改相同的文件名字为每个子工程自己的,让文件名在一个项目中尽量唯一。这个其实也是一个架构和设计的问题。

       情况三,工程是一个目录比如,project/test/test.vcproj,而引用函数的实现目录在project/test1/file.cpp,这种情况下也会报error LNK2019: 无法解析的外部符号

这个情况的解决方法是,将project/test1目录放到附件包含目录中。

 

       当然,可能还有其他的情况,以后遇到再补充和完善。希望能对遇到此问题的朋友有点帮助。

,

 

 转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/16917521

 

 

 

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185363.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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