转载自:http://www.cnblogs.com/tekson/archive/2009/06/17/1505196.html
当头文件中声明了一个函数,但是在相应的源文件中却没有对该函数进行定义,则会出现为“解决的外部符号”(unresolved external symbol )错误。另外,当一个函数调用了外部的一个库文件中的函数,但是在当前project的properties中并没有将所依赖的(dependent)库文件包含进来时,也会出现这种错误。
综上,当一个solution在linking时找不到所涉及到的函数的定义时就会出现“unresolved external symbol ”错误。
例如,下面是调用MIL的库文件mil.lib中的函数时,由于没有将mil.lib包含进来而导致的链接错误。
1>Linking...
1>MDispSelect.obj : error LNK2019: unresolved external symbol _MappFree@4 referenced in function _main
1>MDispSelect.obj : error LNK2019: unresolved external symbol _MsysFree@4 referenced in function _main
1>MDispSelect.obj : error LNK2019: unresolved external symbol _MdispFree@4 referenced in function _main
【解决方案】
1. Project -> ** Properties... -> Configuration Properties -> Linker -> Input -> Additional Dependencies -> mil.lib
另外,在此之前,还需添加MIL库的相应目录:Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Include files中添加C:\Program Files\Matrox Imaging\Mil\Include 以及 Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Library files中添加C:\Program Files\Matrox Imaging\Mil\LIB。添加目录的目的是为了使VC在调用相应库文件时不必总是使用绝对地址,VC可以通过文件名在所包含的目录中进行搜索。这样,前面的mil.lib就不必使用绝对地址了。
【缺点】可移植性差,如果将原工程中的源文件和头文件中的内容copy下来重新建立该工程时(例如:在电子书或网络上找到的程序),仍需自己在工程中添加目录及所需的库文件。
2. 在程序前加入#pragma comment(lib, "mil.lib")也可以达到相同的效果。
【优点】避免了方案1所出现的问题。
分享到:
相关推荐
解决error LNK2001: unresolved external symbol
解决报错Error LNK2001:unresolved external symbol
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 msvcrtd.lib(crt
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 msvcrtd.lib(crtexew.obj) : error LNK2001: ...
visual c++报error LNK2001 unresolved external symbol错就是因为你...
unresolved external symbol,multiply defined symbols found 这是一个困扰C语言新手的问题 #include没毛病 但是用多了就出毛病 看代码,哪都没毛病 在B中#include A 在A中#include B 此时build就会报unresolved ...
博文的配套源码 《【 Visual C++】游戏开发笔记之二——最简单的directx,vc窗口的编写 》 ,原文地址为... 源码编译环境为vs2010. ... 希望能和大家一起交流,共同学习,共同进步。
error LNK2001 unresolved external symbol _GetObjectContext.zip
博文的配套源码 《 【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍&第一个DirectX 11 Demo的创建》 ... ... 此为VS2010版,若没有安装VS2010以上版本的朋友,请用记事本打开,main.cpp文件并复制里面的代码,...
player.obj : error LNK2001: unresolved external symbol _IID_IVideoWindow player.obj : error LNK2001: unresolved external symbol _IID_IMediaControl 这是因为链接器没有找到合适的.lib文件。两种办法: ...
error LNK2005: DllMain already defined in corelibc.lib(dllmain.obj)的解决方案
当用evc编写atl客户端程序时,会有 error LNK2019: unresolved external symbol "void __cdecl _com_issue_error(long)" (?_com_issue_error@@YAXJ@Z) referenced in function "public: __thiscall _variant_t::_...
解决安装vs2012后vs2010 LINK : fatal error LNK1123: failure during conversion to COFF Wrong version: 03/18/2010 01:16 PM 31,048 cvtres.exe Correct version: 02/21/2011 06:03 PM 31,056 cvtres.exe
error LNK2019: 无法解析的外部符号 问题的解决办法,需要的朋友可以参考一下
完美解决VS2003.Net fatal error LNK1201: 写入程序数据库“.pdb”时出错 文末给出一个完美的解决方案和一个懒人补丁包。问题描述如下:在重新编译的时候,经常报错: fatal error LNK1201: 写入程序数据库“.pdb”...
对于 fatal error LNK1123: failure during conversion to COFF错误,网上很多都是说把什么“是”改成“否”,其实都是治标不治本。这里有个链接,让你清楚知道为啥出错,怎么解决。记得保留哦~
如何解决 error LNK2019 无法解析的外部符号,该符号在函数 中被引用
nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol_endthreadex nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol_beginthreadex Debug/MyMFC.exe:fatal error LNK1120:2 ...
有具体的help说明,并有vs2005/vs2008/vs2010添加.lib文件的方法以及vc2005出错解决方法error LNK2019: unresolved external symbol __imp____glutInitWithExit@12 referenced in function _glutInit_ATEXIT_HACK@8
Printer.obj : error LNK2019: unresolved external symbol "protected: __thiscall Counted<class Printer>::Counted(void)" ([email=??0?$Counted@VPrinter@@@@IAE@XZ]??0?$Counted@VPrinter@@@@IAE@XZ[/email]) ...