Vishal Bhatia0112 Ответов: 1

Миграция кода VS2006 C++ в VS2010 (MFC). Ошибка LNK2001: неразрешенный внешний символ ___argv


Всем Привет,

Я переношу приложение с VS2006 на VS2010.

Получаю ниже ошибка при построении:

Error	10	error LNK2001: unresolved external symbol ___argv	D:\Vishal\nseexchfeeds\Nafxcwd.lib(appcore.obj)
Error	11	error LNK2001: unresolved external symbol ___argc	D:\Vishal\nseexchfeeds\Nafxcwd.lib(appcore.obj)



Help me if someone is aware of this error.

Thanks.

What I have tried:

<pre>Please check below settings which i have made in this project:

Configuration settings: 

->Use of MFC: Use MFC in a Static Library

C/C++/ -> Code Generation:

Runtime Library: Multi-threaded (/MT)

Linker:

-> Additional Dependency:

Nafxcwd.lib
msvcrt.lib
msvcrtd.lib
kslzo.lib
ex25.lib
cts.lib
wininet.lib
wsock32.lib


-> IgnoreSpecificDefaultLibraries

libc.lib
libcmt.lib
libcmtd.lib

Vishal Bhatia0112

Большое спасибо Йохену, это работает.
но я включил только libcmt.lib, проигнорировал LIBC.lib, иначе он не смог бы позвонить.

1 Ответов

Рейтинг:
4

Jochen Arndt

Почему вы игнорируете библиотеки LIBC по умолчанию?

При использовании /MT вариант, библиотеку libcmt.Либ требуется (ОТВ. библиотеку libcmtd.Либ для отладочных сборок). Эти библиотеки содержат стандартные библиотечные функции языка Си (и, вероятно, глобальные __argc и __argv переменные), которые используются кодом запуска, расположенным в библиотеке MSVCRT.

Также нет необходимости указывать MSVCRT и другие стандартные библиотеки Windows в качестве дополнительных зависимостей, поскольку они автоматически связываются при использовании функций из этих библиотек (что всегда верно для MSVCRT).