使用visual c++6.0出现LINK fatal error LNK1104cannot open file 的解决方案
VC6.0编译常见错误的详解及其错误分析(范文)
VC6.0编译常见错误的详解及其错误分析(范文)第一篇:VC6.0编译常见错误的详解及其错误分析(范文)VC6.0编译常见错误第一部分编译错误1. error C2001: newline in constant编号:C2001直译:在常量中出现了换行。
错误分析:(1)字符串常量、字符常量中是否有换行。
(2)在这句语句中,某个字符串常量的尾部是否漏掉了双引号。
(3)在这语句中,某个字符创常量中是否出现了双引号字符““”,但是没有使用转义符“””。
(4)在这句语句中,某个字符常量的尾部是否漏掉了单引号。
(5)是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。
2. error C2015: too many characters in constant编号:C2015直译:字符常量中的字符太多了。
错误分析:单引号表示字符型常量。
一般的,单引号中必须有,也只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。
另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:if(x == 'x || x == 'y'){ … }值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。
两个单引号之间不加任何内容会引发如下错误:error C2137:empty characterconstant。
3. error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。
错误分析:0x##是字符ASC码的16进制表示法。
这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。
如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。
C语言中link的错误解决方案
link错误-link4098libcmtd.lib(tolower.obj) : error LNK2005: __tolower already defined in libcd.lib(tolower.obj) libcmtd.lib(tolower.obj) : error LNK2005: _tolower already defined in libcd.lib(tolower.obj) libcd.lib(crt0init.obj) : warning LNK4098: defaultlib "libcmtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:libraryDebug/VGS2DEBUGDLL.exe : fatal error LNK1169: one or more multiply defined symbols found Error executing link.exe.解决方案:Project -> Settings -> Link -> project option中加入/nodefaultlib:"LIBCMTD"error LNK2001: unresolved external symbol _main解决办法解决外部符号错误:_main,_WinMain@16,__beginthreadex在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有柚煤孟钅坎问? 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex1. Windows子系统设置错误, 提示:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainWindows项目要使用Windows子系统, 而不是Console, 可以这样设置:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:windows2. Console子系统设置错误, 提示:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16控制台项目要使用Console子系统, 而不是Windows, 设置:[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:windows改成/subsystem:console3. 程序入口设置错误, 提示:msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口:[Project] --> [Settings] --> 选择"Link"属性页,在Category中选择Output,再在Entry-point symbol中填入wWinMainCRTStartup, 即可4. 线程运行时库设置错误, 提示:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex这是因为MFC要使用多线程时库, 需要更改设置:[Project] --> [Settings] --> 选择"C/C++"属性页,在Category中选择Code Generation,再在Use run-time library中选择Debug Multithreaded或者multithreaded其中,Single-Threaded 单线程静态链接库(release版本)Multithreaded 多线程静态链接库(release版本)multithreaded DLL 多线程动态链接库(release版本)Debug Single-Threaded 单线程静态链接库(debug版本)Debug Multithreaded 多线程静态链接库(debug版本)Debug Multithreaded DLL 多线程动态链接库(debug版本)单线程: 不需要多线程调用时, 多用在DOS环境下多线程: 可以并发运行静态库: 直接将库与程序Link, 可以脱离MFC库运行动态库: 需要相应的DLL动态库, 程序才能运行release版本: 正式发布时使用debug版本: 调试阶段使用fatal error C1083: Cannot open include file: '': No such file or directory答案在VC++的Tools/Option/Directory的Include和Library中加入相关路径nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argvnafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argcnafxcw.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctypenafxcw.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctypenafxcw.lib(dcprev.obj) : error LNK2001: unresolved external symbol __mbctypenafxcw.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype..\..\Output\Release/FirewallMan.exe : fatal error LNK1120: 3 unresolved externals解决方法:在Preprocessor中定义_AFXDLL如果它提示:fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds就这样改:C/C++->Code Generation->Multithread DLL (即实现/MD选项)int WINAPI RmuGetPaStatus (HANDLE hCom, UCHAR* uStatus, UCHAR flagCrc);其中,UCHAR*uStatus是一个传递的地址,关联位置可填地址并且在外部利用指针得到值。
VS64位编译链接问题
查找是否有两个cvtres.exe。一个是C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe, 另一个是C:\Windows\\Framework\v
4.0.30319\cvtres.ex Nhomakorabea。右键属性|详细信息 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。
意外的是,治本的办法是第三步,删除旧版本的cvtres.exe后,就不需要每次都设置配置了。
在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为:
第一步:与上相同。
第二步:将 项目|项目属性|配置属性|连接器|清单文件|嵌入清单 “是”改为“否”。
第三步:一般计算机经过上两步设置就能解决问题了,但是如果还有问题,那就按一下方法解决:
LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
终极解决方案:
VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。
VC++6.0裏面20种C语言常见错误代码解释
11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'
成员函数“OnTimer”没有在“CHelloView”中声明。
12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'
9、error C2146: syntax error : missing ';' before identifier 'dc'
句法错误:在“dc”前丢了“;”。
10、error C2196: case value '69' already used
值69已经用过。(一般出现在switch语句的case分支中)
重载的函数“void reset(int)”在类“B”中找不到。
13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
解决方法:
其一,包含正确路径的#include "stdafx.h";
其二,在*.cpp文件的Setting里面设置,C++选项中的分类 precompiled header,选择不包含头文件即可。
2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory
Visual_c++6.0常见错误提示汇总
Visual C++6.0 编译错误提示汇总1、fatal error C1010: unexpected end of file while looking for precompiled header directive。
寻找预编译头文件路径时遇到了不该遇到的文件尾。
(一般是没有#include "stdafx.h")2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory不能打开包含文件“R…….h”:没有这样的文件或目录。
3、error C2011: 'C……': 'class' type redefinition类“C……”重定义。
4、error C2018: unknown character '0xa3'不认识的字符'0xa3'。
(一般是汉字或中文标点符号)5、error C2057: expected constant expression希望是常量表达式。
(一般出现在switch语句的case分支中)6、error C2065: 'IDD_MYDIALOG' : undeclared identifier “IDD_MYDIALOG”:未声明过的标识符。
7、error C2082: redefinition of formal parameter 'bReset'函数参数“bReset”在函数体中重定义。
8、error C2143: syntax error: missing ':' before '{'句法错误:“{”前缺少“;”。
9、error C2146: syntax error : missing ';' before identifier 'dc' 句法错误:在“dc”前丢了“;”。
VisualBasic 6.0常见错误及解决方案
解决方案 ⑴ 关闭不需要的应用程序、文档或资源文件。 ⑵ 将庞大的模块或过程分成几个。 虽然这样不能节省内存空间, 但可避免 64K 段边界 限制。 ⑶ 按增强方式重新启动 Microsoft Windows 。 ⑷ 空出一些磁盘空间以增加虚拟内存,或至少确保有空馀的空间。 ⑸ 减少一些驻留程序。 ⑹ 减少一些不需要的设备驱动程序。 ⑺ 减少 Public 变量的数量。 4. 下标越界(错误 9) 错误原因 只能在定义的范围内访问数组元素和集合成员。
错误分析 ⑴ 引用了不存在的数组元素。 ⑵ 声明数组时没有指定元素的数目。例如,下列的代码就会导致此错误:
2
Dim MyArray() As Integer MyArray(8) = 234 ' 导致错误 9。 ⑶ 引用了不存在的集合成员。 ⑷ 使用速写形式的下标,结果指定了错误的元素。 解决方案 ⑴ 下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查 数组的声明以确认其上界和下界。 若使用的是重新指定范围的数组, 应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。 ⑵ Visual Basic 并不会将没有指定范围的数组自动设为 0 – 10。相反必须使用 Dim 或 ReDim 来指定数组中元素的数目。 ⑶ 试着使用 For Each...Next 结构代替指定元素下标。 ⑷ 例如, 当在集合上使用 ! 运算子时, ! 自动指定了一个键。 例如 object!keyname.value 和 object.item(keyname).value 是一样的。在此例中,集合中如果 keyname 表示一 个错误键,错误就会产生。若要改进此错误,在集合对象中使用正确的键名称或索 引。 5. 数组长度固定或临时被锁定(错误 10) 错误原因 并非所有数组都可重设大小。即使数组声明成动态,或者数组是在 Variant 变量中, 也会被临时锁定。 错误分析 ⑴ 使用 ReDim 来改变固定大小数组的元素数。 例如, 在下列的代码中, 在 NextOne 过 程中 SomeArr 接收了固定大小的数组 FixedArr , 然后试图调整 SomeArr 的大小: Sub FirstOne Dim FixedArr(25) As Integer NextOne FixedArr() End Sub Sub NextOne(SomeArr() As Integer) ReDim SomeArr(35) ... End Sub ⑵ 对模块层次动态数组,要重新确定大小,而某一个元素已经作为参数传给了过程。 例如,在下列的代码中,ModArray 是模块层次动态数组,却将其第 56 个元素以按 引用传给 Test 过程:
VISUAL STUDIO 6.0 LINK 2001常见错误解决总结
visual studio6.0link2001常见错误解决总结第一:nafxcwd.lib(appcore.obj):error LNK2001:unresolved external symbol___argvnafxcwd.lib(appcore.obj):error LNK2001:unresolved external symbol___argcnafxcwd.lib(timecore.obj):error LNK2001:unresolved external symbol__mbctype nafxcwd.lib(apphelp.obj):error LNK2001:unresolved external symbol__mbctype nafxcwd.lib(filelist.obj):error LNK2001:unresolved external symbol__mbctype解决办法:PROJECT->SETING->C/C++->PREPROCESSOR->定义_AFXDLL第二:解决外部符号错误:_main,_WinMain@16,__beginthreadex在创建MFC项目时,不使用MFC AppWizard向导,如果没有设置好项目参数,就会在编译时产生很多连接错误,如error LNK2001错误,典型的错误提示有:libcmtd.lib(crt0.obj):error LNK2001:unresolved external symbol_mainLIBCD.lib(wincrt0.obj):error LNK2001:unresolved external symbol_WinMain@161.Windows子系统设置错误,提示:libcmtd.lib(crt0.obj):error LNK2001:unresolved external symbol_mainWindows项目要使用Windows子系统,而不是Console,可以这样设置:[Project]-->[Settings]-->选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:windows2.Console子系统设置错误,提示:LIBCD.lib(wincrt0.obj):error LNK2001:unresolved external symbol_WinMain@16控制台项目要使用Console子系统,而不是Windows,设置:[Project]-->[Settings]-->选择"Link"属性页,在Project Options中将/subsystem:windows改成/subsystem:console3.程序入口设置错误,提示:msvcrtd.lib(crtexew.obj):error LNK2001:unresolved external symbol_WinMain@16通常,MFC项目的程序入口函数是WinMain,如果编译项目的Unicode版本,程序入口必须改为wWinMainCRTStartup,所以需要重新设置程序入口:[Project]-->[Settings]-->选择"Link"属性页,在Category中选择Output,再在Entry-point symbol中填入wWinMainCRTStartup,即可4.线程运行时库设置错误,提示:nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol__beginthreadex nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol__endthreadex这是因为MFC要使用多线程时库,需要更改设置:[Project]-->[Settings]-->选择"C/C++"属性页,在Category中选择Code Generation,再在Use run-time library中选择Debug Multithreaded或者multithreaded其中,Single-Threaded单线程静态链接库(release版本)Multithreaded多线程静态链接库(release版本)multithreaded DLL多线程动态链接库(release版本)Debug Single-Threaded单线程静态链接库(debug版本)Debug Multithreaded多线程静态链接库(debug版本)Debug Multithreaded DLL多线程动态链接库(debug版本)单线程:不需要多线程调用时,多用在DOS环境下多线程:可以并发运行静态库:直接将库与程序Link,可以脱离MFC库运行动态库:需要相应的DLL动态库,程序才能运行release版本:正式发布时使用debug版本:调试阶段使用初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:unresolved external symbol“symbol”(不确定的外部“符号”)。
VC6.0打开文件时出错的解决办法
VC6.0打开文件时出错的解决办法VC6.0对大家来说一定不会陌生,但是毕竟VC6.0是上个世纪的产品了,在现在的软件环境下,出现了一些问题。
很多同学在安装VC6.0后发现文件下的【打开】命令无法正常使用了,点击后会报错退出,如图:与此同时,使用【工程(project)】→【添加到工程(Add to project)】→【文件(files)】命令时,也会引发同样的错误,也就是说,VC6.0的打开文件对话框无法正常使用。
网上有人说,出现这个错误是因为VC6.0和Office2007或者Office2010中的PowerPoint 和Visio组件存在冲突。
微软已经推出了相关的解决方案,它发布了一个filetool的源文件:官方下载地址:/download/vc60ent/s1/6.0/w9xnt4/en-us/filetool.exe下载后解压缩,得到的是一个VC的工程文件。
(WINZIP的解压缩地址最好自定义或者将默认的地址复制一下,否则可能找不到解压缩后的文件)如图:在解压目录下找到filetool.dsw,用VC6.0打开,按F7构建filetool.dll,编译链接执行完成后,到filetool的解压缩目录,找到debug文件夹,将生成的filetool.dll拷贝到VC安装目录C:\Program Files\Microsoft Visual Studio\Common\MSDev98\AddIns文件夹下。
然后打开VC6,选择【工具(tools)】→【定制(Customize)】→【附加项和宏(Add-ins and Macro Files)】,将filetool前面的勾打上,点击关闭,如图:在这里可能会出现一个问题:“unable to register this add-in because the DLL cannot be loaded”,这是由于dll自动注册失败导致的,可以通过手动注册来解决。
使用visual c 6.0出现LINK fatal error LNK1104cannot open file 的解决方案
最近一个朋友问我,为什么他在使用visual c++6.0的时候,在最后的测试阶段总会显示如下的错误LINK : fatal error LNK1104: cannot open file "Debug/Text1.exe
首先我们来解释一下这句话是什么意思:大意就是致命的错误,无法找到text。
因为我以前自己也遇到了这样的问题,对此苦恼了很久,后来无意间我解决了这个问题,现在跟大家分享一下过程,希望可以帮到大家。
如何用Microsoft Visual C++6.0编写程序
打开Microsoft Visual C++6.0
点击-文件-新建-工程-win 32 console application,在工程名字里面输入我们想取的工程名称,我这里以kk为例。
这里我们需要注意的地方是工程所在的位置,后面之所以出现这个错误就是因为无法找到地址,所以我们这里需要给工程一个能找到,存在的地址(不要使用默认的地址,默认的地址可能找这里我将工程存放在G盘\lol文件夹里
确认无误后点击确定进入下一步
点击-一个空工程、点击完成点击确定
点击文件,新建,选择c++ source file(上图),给文件取一个名
字,这里取名为bt(下图),确定无误后点击确定。
Microsoft Visual C++6.0 下一步就显示了我们可以在Microsoft Visual C++6.0编写程序了
随意输入一个简单的程序
编译我们发现没有错误发现没有错误,
接着按ctrl+f5我们发现并没有在出现错误LINK : fatal error LNK1104: cannot open file "Debug/xx.exe,如下图所示。
vc中errorLNK2001:...
vc中errorLNK2001:...一,问题描述error LNK2001: unresolved external symbol _WinMain@16 debug/main.exe:fatal error LNK 1120:1 unresolved externals error executing link.exe;二,产生这个问题可能的原因1,你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.2. 你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。
vc这时的默认设置是针对控制台程序的。
三,解决方法1.进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_CONSOLE, 添加_WINDOWS2.进入project->setting->Link, 在Project options中将/subsystem:console改为/subsystem:windows.3.保存设置,Rebuild All.VS2005中的设置请参考对应项进行设置四,VS2005中的设置1.菜单中选择 Project->Properties, 弹出Property Pages窗口2.在左边栏中依次选择:Configuration Properties->C/C++->Preprocessor,然后在右边栏的Preprocessor Definitions对应的项中删除_CONSOLE, 添加_WINDOWS.3.在左边栏中依次选择:Configuration Properties->Linker->System,然后在右边栏的SubSystem对应的项改为Windows(/SUBSYSTEM:WINDOWS)4.Rebuild All. Ok ?测试:(环境:vs2005,编程语言vc)1.用文本编辑器编写如下代码:// test.c#i nclude <windows.h>int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){MessageBox(NULL, "Hello!", "title", MB_OK);}假设把文件包存为test.c.2.用vs2005建一个Win32 Console Application, 注意在Application Settings设置为Empty project. 然后把test.c添加到工程中去。
VC6.0应用OpenCV 出现的错误及解决办法
!Error!VC6.0应用OpenCV出现的错误及解决办法王琼西安交大控制工程研究所eagle-sky@1.OpenCV2.2也添加了相关路径。
(P267<<Visual C++数字图象处理开发入门与编程实践>>)未通过编译,程序运行时报错fatal error C1083: Cannot open include file: 'cv.h': No such file or directory。
解决办法:由于编程软件使用的是VC6.0,建议用OpenCV1.0。
2.安装OpenCV1.0,进行相关的全局设置。
不要忘了添加<OpenCV安装目录>\lib,否则连接时报错“LINK : fatal error LNK1181: cannot open input file "..\..\Program Files\OpenCV\lib\highgui.lib" 执行link.exe 时出错.”3. 问题描述:编译没问题,但运行时出现如下警告对话框。
Could not execute: invalid directory (Win32 error 267)解决办法:造成这个错误的原因主要是运行别人的程序时,设置不正确.,工程—>设置,问题出在右边“调试”标签的“工作目录”和你现在运行工程的目录不一致。
把工作目录中的路径去掉即可。
4. pCapture = cvCaptureFromFile(szVideoFileName);不能打开A VI视频文件,解决办法:网上下载一个“K-Lite Codec Pack Full 3.9.3 Beta”(常用视频播放插件合集),安装以后,程序能顺利打开视频文件。
5. 新建工程后,程序编译时报错Linking...LoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvReleaseImageLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvDestroyWindowLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvWaitKey LoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvShowImageLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvNamedWindowLoadImage01Dlg.obj : error LNK2001: unresolved external symbol _cvLoadImageDebug/LoadImage01.exe : fatal error LNK1120: 6 unresolved externals执行link.exe 时出错.解决办法:工程-》设置-》连接中,添加对象/库模块cxcore.lib cv.lib ml.libcvaux.lib highgui.lib cvcam.lib即可,如下图(需要用到即可加载几个)。
VC6.0常见问题
1.VC6.0常见编译错误提示(1)error C2001: newline in constant编号:C2001直译:在常量中出现了换行。
错误分析:①字符串常量、字符常量中是否有换行。
②在这句语句中,某个字符串常量的尾部是否漏掉了双引号。
③在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使用转义符“\"”。
④在这句语句中,某个字符常量的尾部是否漏掉了单引号。
⑤是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。
(2)error C2015: too many characters in constant编号:C2015直译:字符常量中的字符太多了。
错误分析:单引号表示字符型常量。
一般的,单引号中必须有且只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。
另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:if (x == 'x || x == 'y') , … -值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。
(3)error C2137: empty character constant编号:C2137直译:空的字符定义。
错误分析:原因是连用了两个单引号,而中间没有任何字符,这是不允许的。
(4)error C2018: unknown character '0x##'编号:C2018直译:未知字符‘0x##’。
错误分析:0x##是字符ASC码的16进制表示法。
这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。
如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。
(5)error C2041: illegal digit '#' for base '8'编号:C2141直译:在八进制中出现了非法的数字‘#’(这个数字#通常是8或者9)。
无法解析的外部符号LNK错误总结
⽆法解析的外部符号LNK错误总结错误分析:这是在链接过程中的报错,之所以在这⾥报错,⽽没有在编译过程中报错,说明包含报错⽅法的.h⽂件已经被包含了,但对应的cpp⽂件或者库⽂件链接器没有找到,所以它就很委屈地报了这个错误.那会有哪些可能的原因导致这个问题呢?1.缺少对应的cpp⽂件(⽐如下图中,在main.cpp中,添加了.h⽂件,但是项⽬中没有对应的函数的实现⽂件.⼀开始我对LNK报错很抵触,因为它的报错信息看着太难受了.后来发现只需要看⼏个关键信息就可以了:是哪个obj⽂件下的,报错的函数名是什么)2.缺少对应lib⽂件 2.1 lib⽂件压根就没有添加或者路径错误(看下VS中的库⽬录有没有添加,或者在代码中搜索"#pragma comment(lib, )") 2.2 lib⽂件的版本对应不上 (这个有时候很难想到,⽐如当时⽤windbg的lib,VS⾥的环境是32位,⾃⼰没想太多把64位的lib路径添加进去)3.cpp⽂件存在,但没有放到合适的位置.之前⼀直搞不明⽩为何有的包含cpp的⽂件夹要添加到VS的项⽬,后来了解到如果不添加到项⽬中,编译过程中找不到cpp⽂件对应的函数,所以就没有⽣成对应的obj⽂件,但编译期间不会报错.但是在链接时,别的obj去找它找不到就会报错咯.昨天认识到,你把头⽂件路径加到代码中,编译的时候就知道有这个函数,所以⼀些依赖的头⽂件就不必添加到VS的项⽬视图中(只要在代码中能够找到就⾏了).⽽cpp 就不⼀样了,编译时把它变成obj⽂件,链接的时候再把这些obj⽂件串联起来,所以需要让系统知道cpp在哪.认识到库⽂件是obj⽂件的集合,它⼀⽅⾯能够让别⼈调⽤起来更⽅便(如果你把这些源⽂件添加到项⽬中,会恶⼼死⾃⼰);另⼀⽅⾯节省了编译的过程;再者使⽤库⽂件能够保证代码的私密性.4.从github上下载的仓库,如果⽤3⽅法⼿动去添加到项⽬中,也有可能会出现该错误(估计实际编译需要更多的配置).因此需要按照⽂档中说明去编译,⽐如使⽤cmake 之类的.5。
使用VISUAL C++6.0出现LINK FATAL ERROR LNK1104CANNOT OPEN FILE 的解决方案
最近一个朋友问我,为什么他在使用visual c++6.0的时候,在最后的测试阶段总会显示如下的错误LINK : fatal error LNK1104: cannot open file "Debug/Text1.exe
首先我们来解释一下这句话是什么意思:大意就是致命的错误,无法找到text。
因为我以前自己也遇到了这样的问题,对此苦恼了很久,后来无意间我解决了这个问题,现在跟大家分享一下过程,希望可以帮到大家。
如何用Microsoft Visual C++6.0编写程序
打开Microsoft Visual C++6.0
点击-文件-新建-工程-win 32 console application,在工程名字里面输入我们想取的工程名称,我这里以kk为例。
这里我们需要注意的地方是工程所在的位置,后面之所以出现这个错误就是因为无法找到地址,所以我们这里需要给工程一个能找到,存在的地址(不要使用默认的地址,默认的地址可能找这里我将工程存放在G盘\lol文件夹里
确认无误后点击确定进入下一步
点击-一个空工程、点击完成
点击确定
点击文件,新建,选择c++ source file(上图),给文件取一个名
字,这里取名为bt(下图),确定无误后点击确定。
Microsoft Visual C++6.0 下一步就显示了我们可以在Microsoft Visual C++6.0编写程序了 随意输入一个简单的程序
编译我们发现没有错误发现没有错误,
接着按ctrl+f5我们发现并没有在出现错误LINK : fatal error LNK1104: cannot open file "Debug/xx.exe,如下图所示。
VC6.0错误指令及解决方法
1 error C2065: 'xxx' : undeclared identifier 102012136xxx标识符没定义。
标识符可能是变量名,函数名等等。
注意检查拼写,注意大小写。
注意小写字母l和数字1的区别。
检查变量的定义和使用是否一致。
变量定义语句:在函数最前面,以变量类型开始,以分号分隔的几个变量名,如int a, b; 注意一个变量定义语句只能写一个变量类型。
2 error C2146: syntax error : missing ';' before identifier 'xxx'语句末尾缺少分号,一般是错误定位所在行的上一行。
3 error LNK2001: unresolved external symbol _main没有main函数。
检查拼写,看是否把main写成了mian。
4 fatal error C1021: invalid preprocessor command 'includ'预处理指令拼写错误。
5 fatal error C1083: Cannot open include file: 'stio.h': No such file or directory包含文件名写错了。
文件名中间不能有空格。
6 error C2001: newline in constant检查是否漏了双引号,双引号是否配对,是否把双引号"写成了单引号'。
7 程序运行弹出非法操作的对话框。
检查是否有scanf漏掉&符号的问题。
8 编译时没错,链接有错:error LNK2005: _main already defined in a.objfatal error LNK1169: one or more multiply defined symbols found一般是在一个程序里面有多个源文件都包含main函数。
如何解决VISUAL C++ 6.0不正确连接的问题
Part1:1. 如何解决Visual C++ 6.0不正确连接的问题情景:明明改动了一个文件,却要把整个项目全部重新编译链接一次。
刚刚链接好,一运行,又提示重新编译链接一次。
这是因为出现了未来文件(修改时间和创建时间比系统时间晚)的缘故。
可以这样处理:找到工程文件夹下的debug目录,将创建和修改时间都比系统时间的文件全部删除,然后再从新“Rebuild All”一次。
2. 引起LNK2001的常见错误都有哪些遇到的LNK2001错误主要为:unresolved external symbol “symbol”如果链接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误信息。
一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在,拼写不正确或者使用错误;其次可能使用了不同版本的链接库。
以下是可能产生LNK2001错误的原因:<1>由于编码错误导致的LNK2001错误(1)不相匹配的程序代码或模块定义(.DEF)文件导致LNK2001。
例如,如果在C++源文件了内声明了一变量“var1”,却试图在另一个文件内以变量“var1”访问改变量。
(2)如果使用的内联函数是在.cpp文件内定义的,而不是在头文件内定义将导致LNK2001错误。
(3)调用函数时如果所用的参数类型和头函数声明时的类型不符将会产生LNK2001错误。
(4)试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001错误。
(5)要注意函数和变量的可公用性,只有全局变量、函数是可公用的。
静态函数和静态变量具有相同的使用范围限制。
当试图从文件外部方位任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001错误。
<2>由于编译和联机的设置而造成的LNK2001错误(1)如果编译时使用的是/NOD(/NODERAULTLIB)选项,程序所需要的运行库和MFC时将得到又编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。
VISUAL STUDIO 6.0 LINK 2001常见错误解决总结
visual studio6.0link2001常见错误解决总结第一:nafxcwd.lib(appcore.obj):error LNK2001:unresolved external symbol___argvnafxcwd.lib(appcore.obj):error LNK2001:unresolved external symbol___argcnafxcwd.lib(timecore.obj):error LNK2001:unresolved external symbol__mbctype nafxcwd.lib(apphelp.obj):error LNK2001:unresolved external symbol__mbctype nafxcwd.lib(filelist.obj):error LNK2001:unresolved external symbol__mbctype解决办法:PROJECT->SETING->C/C++->PREPROCESSOR->定义_AFXDLL第二:解决外部符号错误:_main,_WinMain@16,__beginthreadex在创建MFC项目时,不使用MFC AppWizard向导,如果没有设置好项目参数,就会在编译时产生很多连接错误,如error LNK2001错误,典型的错误提示有:libcmtd.lib(crt0.obj):error LNK2001:unresolved external symbol_mainLIBCD.lib(wincrt0.obj):error LNK2001:unresolved external symbol_WinMain@161.Windows子系统设置错误,提示:libcmtd.lib(crt0.obj):error LNK2001:unresolved external symbol_mainWindows项目要使用Windows子系统,而不是Console,可以这样设置:[Project]-->[Settings]-->选择"Link"属性页,在Project Options中将/subsystem:console改成/subsystem:windows2.Console子系统设置错误,提示:LIBCD.lib(wincrt0.obj):error LNK2001:unresolved external symbol_WinMain@16控制台项目要使用Console子系统,而不是Windows,设置:[Project]-->[Settings]-->选择"Link"属性页,在Project Options中将/subsystem:windows改成/subsystem:console3.程序入口设置错误,提示:msvcrtd.lib(crtexew.obj):error LNK2001:unresolved external symbol_WinMain@16通常,MFC项目的程序入口函数是WinMain,如果编译项目的Unicode版本,程序入口必须改为wWinMainCRTStartup,所以需要重新设置程序入口:[Project]-->[Settings]-->选择"Link"属性页,在Category中选择Output,再在Entry-point symbol中填入wWinMainCRTStartup,即可4.线程运行时库设置错误,提示:nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol__beginthreadex nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol__endthreadex这是因为MFC要使用多线程时库,需要更改设置:[Project]-->[Settings]-->选择"C/C++"属性页,在Category中选择Code Generation,再在Use run-time library中选择Debug Multithreaded或者multithreaded其中,Single-Threaded单线程静态链接库(release版本)Multithreaded多线程静态链接库(release版本)multithreaded DLL多线程动态链接库(release版本)Debug Single-Threaded单线程静态链接库(debug版本)Debug Multithreaded多线程静态链接库(debug版本)Debug Multithreaded DLL多线程动态链接库(debug版本)单线程:不需要多线程调用时,多用在DOS环境下多线程:可以并发运行静态库:直接将库与程序Link,可以脱离MFC库运行动态库:需要相应的DLL动态库,程序才能运行release版本:正式发布时使用debug版本:调试阶段使用初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:unresolved external symbol“symbol”(不确定的外部“符号”)。
Visual C++ 6.0常见问题
关于Visual C++ 6.0一些常见的BUG和安装问题
Visual C++ 6.0作为一个1998年出生的开发工具在现在是有点过时,其中的调试麻烦程度和兼容性问题真是头疼。
但是现在很多高校的C语言是必修,使用的编译工具也是Visual C++ 6.0,很多小白在安装完以后会出现各种各样的问题。
1.汉化版安装完以后出现Visual C++ 6.0无法正常启动提示0xc0000142
出现这个问题有可能有两个原因
1.先打开你C语言安装目录中\VC98\Bin\CL.exe文件,如果不能正常打开,提示缺少MSPDB60.all文件。
接下来就去把Common\MSDev98\Bin\MSPDB60.all 文件拷贝到\VC98\Bin路径中,然后再尝试打开\VC98\Bin\CL.exe文件。
如果可以正常打开就看下一步操作。
2.汉化以后启动程序可能会被更改,只要把英文版的启动程序拷贝到汉化版目录中就好了。
启动程序文件是\Common\MSDev98\Bin\MSDEV.EXE,附上一个英文版的启动程序,下载以后解压到\Common\MSDev98\Bin目录中覆盖原文件就好了,如果怕出错,就提前把原文件先备份一下。
M SD EV exe.zi p
2.免安装汉化版常见问题
免安装的问题应该跟安装的问题差不多,如果不行就下载一个安装程序,Visual C++ 6.0与电脑运行环境关系不大。
Visual C++6.0 中fatal error C1083和Error spawning cl.exe 错误的解决办法
Visual C++6.0中fatal error C1083和Error spawningcl.exe错误的解决办法最近在做VC开发的过程中遇到了这个烦人的问题,查阅了很多资料也没有一个统一的说法,所以把所有可能出现的情况都总结一下,供以后参考。
症状:fatal error C1083:Cannot open compiler intermediate file:“C:\WINDOWS\Temp\xxxx”No such file or directory或致命错误C1083:无法打开编译器中间文件:<tmp目录>;\<tmpfile>:没有的文件或目录原因之一:有可能是环境变量设置不对。
user用户变量和system变量TEMP 和TMP的变量值都为%SystemRoot%\TEMP,在正常机器上,这是没有问题的,但是有的用户机器的系统盘是手动更改成C盘的,本来应该为E盘。
解决办法:将user用户变量和system变量TEMP和TMP的变量值都改为C:\WINDOWS\Temp原因之二:和预编译头的设置有关。
解决办法:打开Settings对话框,左边的Settings For中选中Release,底下的TreeView中选中StdAfx.cpp,右边选中C/C++标签页,Category选Precompiled Headers,底下选Create precompiled header,Through header 填StdAfx.h。
左边的TreeView中依次选中工程中其他所有的cpp,Precompiled Headers都选中Use precompiled header file,Through header填StdAfx.h。
最后,“OK”、“Rebuild All”。
原因三:该错误是由TMP环境变量的末尾分号引起的。
例如:TMP=C:\TMP;解决办法:从命令行设置TMP环境变量正确方法是,如下所示:C:\>SET TMP=C:\TMP非常重要的环境字符串不能结束用分号(;),因为编译器将中间文件名追加到TMP路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最近一个朋友问我,为什么他在使用visual c++6.0的时候,在最后的测试阶段总会显示如下的错误LINK : fatal error LNK1104: cannot open file "Debug/Text1.exe
首先我们来解释一下这句话是什么意思:大意就是致命的错误,无法找到text。
因为我以前自己也遇到了这样的问题,对此苦恼了很久,后来无意间我解决了这个问题,现在跟大家分享一下过程,希望可以帮到大家。
如何用Microsoft Visual C++6.0编写程序
打开Microsoft Visual C++6.0
点击-文件-新建-工程-win 32 console application,在工程名字里面输入我们想取的工程名称,我这里以kk为例。
这里我们需要注意的地方是工程所在的位置,后面之所以出现这个错误就是因为无法找到地址,所以我们这里需要给工程一个能找到,存在的地址(不要使用默认的地址,默认的地址可能找这里我将工程存放在G盘\lol文件夹里
确认无误后点击确定进入下一步
点击-一个空工程、点击完成点击确定
点击文件,新建,选择c++ source file(上图),给文件取一个名
字,这里取名为bt(下图),确定无误后点击确定。
Microsoft Visual C++6.0 下一步就显示了我们可以在Microsoft Visual C++6.0编写程序了
随意输入一个简单的程序
编译我们发现没有错误发现没有错误,
接着按ctrl+f5我们发现并没有在出现错误LINK : fatal error LNK1104: cannot open file "Debug/xx.exe,如下图所示。