ошибка LNK2001: неразрешенный внешний символ - PullRequest
4 голосов
/ 16 февраля 2011

Я конвертирую свой проект из vc6 в VS 2010. Когда я компилирую свой проект, я получаю ошибку, как показано ниже для входных данных may .lib.Я добавил все эти библиотеки в Linker-> Input-> Additional Dependencies, а также указал путь к этим .lib-файлам в директориях Link-> General-> Additional Library.Любой совет по этому вопросу будет очень полезным.

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 ]

7 голосов
/ 23 февраля 2011

Вам необходимо определить, где определена функция SetLastExP().

  • Убедитесь, что библиотека, реализующая SetLastExP, связана.
  • Получите файл .obj и проверьте с помощью dumpbin, реализует ли он оформление, которое вы ожидаете.

    dumpbin /symbols foo.obj | find "External" | find "SetLastExP"
    
  • Сравните оформление, которое вы видите с оформлением, указанным в сообщении об ошибке компоновщика.

Возможно, функция определена как extern "C", тогда как ваш заголовочный файл не отражает это.

3 голосов
/ 22 ноября 2011

Иногда, если у вас есть разные наборы символов (Configuration properties -> general) в ваших подпроектах, Visual Studio отображает такую ​​ошибку:

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