我正在将我的项目从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)
由于
答案 0 :(得分:7)
您需要确定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