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

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


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

 

 

 

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

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

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


相关推荐

  • 二极管工作状态的判断_有两个二极管的工作状态怎么判断

    二极管工作状态的判断_有两个二极管的工作状态怎么判断看了很多说法,感觉都没有对三极管饱和时内部载流子的流向分析说清楚…….看来最基本的问题,深究起来才是最难的。在网上苦苦寻觅,找到eet论坛中的一个问答回复,算是勉强可以回答我这个疑问吧,如下:http://forum.eet-cn.com/FORUM_POST_10012_1200158575_0.HTM?jumpto=view_welcomead_forum_1324483377358…

    2022年9月10日
  • Django之mysql表单操作

    在Django之ORM模型中总结过django下mysql表的创建操作,接下来总结mysql表记录操作,包括表记录的增、删、改、查。1.添加表记录对于表单的添加有三种方式:2.删除表记录m

    2021年12月29日
  • 常用的CSS3选择器

    常用的CSS3选择器常用的CSS选择器CSS选择器的作用就是从HTML页面中找出特定的某类元素。常用的几类CSS选择器如下表所示。伪选择器比较特殊,分为伪元素和伪类元素两种。一、属性选择器1.E[att^=value]属性选择器E[att^=value]属性选择器是指选择名称为E的标记,且该标记定义了att属性,att属性值包含前缀为value的子字符串。需要注意的是E是可以省略的,如果省略则表示可以匹配…

    2022年7月11日
  • linux系统线程通信的几种方式,Linux的进程/线程通信方式总结

    linux系统线程通信的几种方式,Linux的进程/线程通信方式总结Linux系统中的进程通信方式主要以下几种:同一主机上的进程通信方式*UNIX进程间通信方式:包括管道(PIPE),有名管道(FIFO),和信号(Signal)*SystemV进程通信方式:包括信号量(Semaphore),消息队列(MessageQueue),和共享内存(SharedMemory)网络主机间的进程通信方式*RPC:RemoteProcedureCall…

    2022年6月20日
  • Vim设置colorscheme小技巧

    Vim设置colorscheme小技巧VIM的颜色主题在/usr/share/vim/vim73/colors文件夹里。打开vim后在normal模式下输入“:colorscheme”查看当前的主题,修改主题使用命令“:colorschememycolor”,其中mycolor是你usr/share/vim/vim73/colors文件夹包含的文件名。也可以把这个命令吸入~/.vimrc配置文件中,这样每次打开vim都是你设定的主题

    2022年10月23日
  • C++ STL它vector详细解释

    C++ STL它vector详细解释

    2022年1月8日

发表回复

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

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