关于我遇到的“LNK 2019无法解析的外部符号”的链接错误

作者: hsf 分类: VC++ 发布时间: 2017-12-02

昨天在调试程序的时候出现了“LNK 2019无法解析外部符号”的问题(VS2008),按照网上说的方法都没有解决问题,最后在项目文件中发现有两个同名的但是不在同一个文件夹下的cpp文件,而产生LNK错误的cpp文件中有对这个重名文件的引用,结果导致了其中一个cpp文件产生的目标文件(obj)覆盖了真正需要的cpp产生的OBJ文件,导致链接的时候找不到指定的符号而出现了链接错误

下面给个图说明一下我遇到的情况吧:

在项目中,同时包含了文件夹1和文件夹2中的所有cpp文件,而ref.cpp需要调用的函数是文件夹2中a.cpp中函数add,也就是途中红色是引用的函数。

情况一:当文件夹1中的a.cpp先于文件夹2中的a.cpp被编译,这样调用没有问题,ref.cpp能够找到add函数,目标文件a.obj中有add函数,没有Max函数

情况二:当文件夹1中的a.cpp比文件夹2中的a.cpp被编译的话,ref.cpp就无法找到add函数,因为临时目录中的a.obj被文件夹一中的a.cpp生成的目标文件给替换了,目标文件a.obj中有Max函数,没有add函数

情况二会出现LNK 2019无法解析的外部符号的链接错误,改一下a.cpp的名称或者改一下编译顺序就能解决问题,最好该名称。


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注