首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >error LNK2019: 无法解析的外部符号的几种情况探讨[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-11-08 14:58:35
发布2022-11-08 14:58:35
10.4K0
举报

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月6日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档