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

Arv*_*ind 4 visual-c++-6 visual-studio-2010 visual-c++

我正在将我的项目从vc6转换为VS 2010.当我编译我的项目时,我得到的错误如下所示.lib输入.我在Linker-> Input-> Additional Dependencies中添加了所有这些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)
Run Code Online (Sandbox Code Playgroud)

谢谢

har*_*per 7

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

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

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

可能该函数被定义为extern "C"当您的头文件没有反映这一点时.