类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
dealpdu.obj : error LNK2001: unresolved external symbol _g_IPAddress
dealpdu.obj : error LNK2001: unresolved external symbol _g_Sport
rectrap.obj : error LNK2001: unresolved external symbol "int __cdecl send2Server(int,struct SNMPPdu *)" (?send2Server@@YAHHPAUSNMPPdu@@@Z)
rectrap.obj : error LNK2001: unresolved external symbol "int __cdecl GetEventIndex(char *)" (?GetEventIndex@@YAHPAD@Z)
rectrap.obj : error LNK2001: unresolved external symbol "int __cdecl DealNNMCommand(struct SNMPPdu *,char *)" (?DealNNMCommand@@YAHPAUSNMPPdu@@PAD@Z)
rectrap.obj : error LNK2001: unresolved external symbol "char * __cdecl oid2str(unsigned long *,unsigned int)" (?oid2str@@YAPADPAKI@Z)
rectrap.obj : error LNK2001: unresolved external symbol "int __cdecl read_trapd(void)" (?read_trapd@@YAHXZ)
rectrap.obj : error LNK2001: unresolved external symbol "int __cdecl initConnect(void)" (?initConnect@@YAHXZ)
Release/rectrap.exe : fatal error LNK1120: 8 unresolved externals
Error executing link.exe.
rectrap.exe - 9 error(s), 0 warning(s)
网友回答:
少包含了什么.lib.
此.lib好像是第三方的,并不是VC自带的。
函数 g_IPAddress、g_Sport
的库文件要加上
Project——Setting查看是不是少了某些链接库
缺少Lib文件或者是包含的头文件的版本和Lib文件的版本不同!
连接通不过,原因是因为程序中使用的函数只有头文件,没有实现。所以常见的情况是用到动态库,引入了头文件,但没有包含lib文件;还有的情况是自己工程中的某个函数只在头文件中定义,却忘了在cpp文件中写实现代码造成的
楼上是正解呀,mark!!
混分
链接器工具错误 LNK2001:
无法解析的外部符号“symbol”
代码引用了链接器无法在库和对象文件中找到的内容。
可能的原因
代码请求的内容不存在。
代码请求的内容错误。
该错误信息之后为致命错误 LNK1120。
具体原因
代码问题
如果 LNK2001 诊断文本报告 __check_commonlanguageruntime_version 是无法解析的外部符号,可参见 LNK2019 了解如何解决该问题的信息。
成员模板的定义超出了类的范围。Visual C++ 的一个限制是,成员模板的定义必须完全位于封闭类内。有关 LNK2001 和成员模板的更多信息,请参见知识库文章 Q239436。
代码或模块定义 (.def) 文件中的大小写不匹配会导致 LNK2001。例如,当在一个 C++ 源文件中将一个变量命名为 var1,并试图在另一个源文件中以 VAR1 访问该变量时。
如果项目使用函数内联,但在 .cpp 文件而非头文件中定义函数,则会导致 LNK2001。
从 C++ 程序调用 C 函数但不使用 extern "C"会导致 LNK2001。编译器选项 /Tp 和 /Tc 使编译器将文件分别编译为 C 或 C++,与文件扩展名无关。这些选项会导致函数名与您所期望的名称不同。
试图引用没有外部链接的函数或数据会导致 LNK2001。在 C++ 中,内联函数和 const 数据具有内部链接,除非被显式指定为 extern。
缺少函数主体或变量会导致 LNK2001。如果只有函数原型或 extern 声明,编译器继续运行而不会出现任何错误,但由于没有保留函数代码或变量空间,链接器将无法解析地址调用或变量引用。
调用参数类型与函数声明中的参数类型不匹配的函数会导致 LNK2001。名称修饰将函数参数合并到最终的修饰函数名中。
错误包含的原型导致编译器需要没有提供的函数体,这样会导致 LNK2001。如果同时具有函数 F 的类实现和非类实现,请注意 C++ 范围解析规则。
在使用 C++ 时,将函数原型包含在类定义中但未能包含实现会导致 LNK2001。
试图从抽象基类的构造函数或析构函数调用纯虚函数会导致 LNK2001。纯虚函数没有基类实现。
试图从包含静态变量声明的文件外部访问该静态变量会导致 LNK2001。根据定义,用 Static 修饰符声明的函数具有文件范围。静态变量具有相同的限制。
试图在函数范围外使用用该函数声明的变量会导致 LNK2001。
试图在多个文件中使用 C++ 全局常数会导致 LNK2001。与 C 不同,在 C++ 中全局常数具有 static 链接。若要避免此限制,可以将 const 初始化包括在头文件中,并将此头包括在 .cpp 文件中,也可以使变量成为非常数,然后使用常数引用访问它。
在生成 ATL 项目的发布版本时,指示需要 CRT 启动代码。若要修复,请执行下列操作之一:
将 _ATL_MIN_CRT 从预处理器定义列表中移除,以允许包括 CRT 启动代码。有关更多信息,请参见常规配置设置属性页。
如果可能,移除对需要 CRT 启动代码的 CRT 函数的调用,而是使用它们的 Win32 等效函数。例如,使用 lstrcmp 取代 strcmp。需要 CRT 启动代码的已知函数是一些字符串和浮点函数。
你需要把send2Server对应的lib文件包含到project中去
在你的工程设置中添加你的lib文件。
或者:
在你要用到的头文件中,如
#include <a.h>
#progma comment<"lib,a.lib">
#pragma comment (lib,"shell32")
#pragma comment (lib,"a")
拿函数到MSDN去查,看看需要哪个lib包含进来就可以了:)