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

昨天在调试程序的时候出现了“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的名称或者改一下编译顺序就能解决这个问题,最好该名称。

时间: 2024-10-18 15:57:04

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

error: LNK 2019 无法解析的外部符号

1.如果你是使用的第三方库,你看一下mainplay这个函数是在那个头文件(比如xx.h)里声明的,然后找到其对应的实现库,将其拷贝到你的Debug目录下,再在你的源文件里添加#pragma comment(lib,"xx.lib")2.如果你是自己实现的mainplay,那么请确保你声明了该函数后还在源文件里实现了它,而且这个源文件被添加到了你的工程里(这是为了编译该文件,然后将这个函数生成到obj里) 可能你不太明白.这里简单说一下原理.如果是第三方库,通常作者会提供头文件给你,你

c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法

最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用Python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误: error LNK2001: 无法解析的外部符号 __imp_PyString_FromStringerror LNK2001: 无法解析的外部符号 __imp_PyCallable_Check error LNK2001: 无法解析的外部符号 __imp_PyObject_CallObjecterro

error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 ___tmainCR...(转)

一,问题描述 MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 ___tmainCRTStartup 中被引用  Debug\jk.exe : fatal error LNK1120: 1 个无法解析的外部命令 error LNK2001: unresolved external symbol [email protected] debug/main.exe:fatal error LNK 1

无法解析的外部符号 [email protected] fatal error LNK1120: 1 个无法解析的外部命令

一,问题描述MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 ___tmainCRTStartup 中被引用Debug\jk.exe : fatal error LNK1120: 1 个无法解析的外部命令 error LNK2001: unresolved external symbol [email protected]debug/main.exe:fatal error LNK 1120:

error LNK2019: 无法解析的外部符号 [email protected],该符号在函数。。。使用

一,问题描述 MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 ___tmainCRTStartup 中被引用 Debug\jk.exe : fatal error LNK1120: 1 个无法解析的外部命令 error LNK2001: unresolved external symbol [email protected] debug/main.exe:fatal error LNK 11

[转]无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用

刚学WinAPI编译遇到不少问题,LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 MSVCRTD.lib test. 这个问题表明你新建的是一个main类型函数(控制台程序),而你的程序中有窗口程序,显然是个win32函数,解决方法:项目-属性-链接器-系统-子系统-把控制台该为windows. 以下基本的情况说明: 一,问题描述error LNK2001: unresolved external symbol [email pro

C++工程编译之“error LNK2001: 无法解析的外部符号”

今天一整天都在折腾“error LNK2001: 无法解析的外部符号”,就在头疼不已的时候,总算是找到问题原因了:各个动态链接库的编译方式必须统一才行,要不然很容易对库函数的引用产生冲突.简单来说就是,如果使用的第三方函数库编译方式采用/MD,那么主工程也应该使用/MD.我使用了libevent,而主工程默认采用/MT,所以需要忽略一大堆的函数库,我还纳闷呢,怎么会这么奇怪!!今天总算是解决了长久以来的困惑了. 下面引用一篇文章的描述:[Z]VC运行库版本不同导致链接.LIB静态库时发生重复定义

VS常见错误之一:error LNK2019: 无法解析的外部符号

由于经常使用VS的开发环境,所以经常遇到一些错误提示,其中error LNK2019是很常见的一个报错.今天将此错误的原因和常见解决办法根据自己的经验小小总结一下. 问题样式: 1>SingleView.obj : error LNK2019: 无法解析的外部符号 [email protected],该符号在函数 "protected: int __thiscall CSingleView::CreateViewGLContext(struct HDC__ *)" (?    

错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 解决方法

晚上花几分钟在windows下测了下pthread的用法,出现错误 1 error LNK2019: 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用 经网上搜,反正都没解决,其中一个说引入#pragma comment(lib, "pthreadVC2.lib")后解决,但笔者遇到的不是这个原因,而是版本问题.可参考http://www.cnblogs.com/zhjh256/p/6364777.html解决.