错误LNK2001:未解析的外部符号

时间:2011-02-16 12:37:17

标签: visual-studio-2010 visual-c++ vc6

我正在将我的项目从vc6转换为VS 2010.当我编译我的项目时,我得到的错误如下所示.lib输入。我在Linker中添加了所有这些lib->输入 - >其他依赖项,还在Link-> General-> Additional Library目录中提供了这些.lib文件的路径。任何提示都会非常有用。

lb0.lib(ob0.obj) :error LNK2001: unresolved external symbol "void __stdcall SetLastExP(class ExceptionClass *)" (?SetLastExP@@YGXPAVExceptionClass@@@Z)
lb1.lib(ob1.obj) : error LNK2001: unresolved external symbol "void __stdcall SetLastExP(class ExceptionClass *)" (?SetLastExP@@YGXPAVExceptionClass@@@Z)
lb2.lib(ob2.obj) : error LNK2001: unresolved external symbol "void __stdcall SetLastExP(class ExceptionClass *)" (?SetLastExP@@YGXPAVExceptionClass@@@Z)
lb3.lib(ob3.obj) : error LNK2001: unresolved external symbol "void __stdcall SetLastExP(class ExceptionClass *)" (?SetLastExP@@YGXPAVExceptionClass@@@Z)
lb3.lib(ob4.obj) : error LNK2001: unresolved external symbol "void __stdcall SetLastExP(class ExceptionClass *)" (?SetLastExP@@YGXPAVExceptionClass@@@Z)
lb3.lib(ob5.obj) : error LNK2001: unresolved external symbol "void __stdcall SetLastExP(class ExceptionClass *)" (?SetLastExP@@YGXPAVExceptionClass@@@Z)
lb4.lib(0b6.obj) : error LNK2001: unresolved external symbol "void __stdcall SetLastExP(class ExceptionClass *)" (?SetLastExP@@YGXPAVExceptionClass@@@Z)

由于

2 个答案:

答案 0 :(得分:7)

您需要确定SetLastExP()函数的定义位置。

  • 检查实现SetLastExP的库是否已链接。
  • 获取.obj文件并检查dumpbin是否在您期望的装饰中实现。

    dumpbin /symbols foo.obj | find "External" | find "SetLastExP"
    
  • 将您看到的装饰与链接器错误消息中的装饰进行比较。

可能该函数定义为extern "C",而您的头文件未反映此内容。

答案 1 :(得分:3)

有时,如果您的子项目中有不同的字符集(Configuration properties - > general),Visual Studio会显示此类错误:

error LNK2001: unresolved external symbol" with an *.obj