ошибка C2731: «wWinMain»: функция не может быть перегружена

Я обновил старый проект с VC6 до VS2008, и теперь я получаю эту ошибку компиляции:

error C2731: 'wWinMain' : function cannot be overloaded

В этих строках кода:

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR     lpCmdLine,
int       nCmdShow)

Тот же проект прекрасно компилируется под VC6.

4

Решение

Спасибо всем, я наконец нашел настоящего виновника, это опечатка, я использую LPSTR lpCmdLine вместо LPTSTR lpCmdLine, Настоящая загадка заключается в том, почему он вообще скомпилирован под VC6 — он использовал wWinMain, но каким-то образом это было нормально для lpCmdLine, чтобы быть char * вместо WCHAR *,

Теперь я изменил это на:

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR    lpCmdLine,
int       nCmdShow)

И это работает под VS2008 тоже.

Редактировать: Я успешно скомпилировал и даже запустил программу с этим определением функции под VC6:

int APIENTRY wWinMain(int *hInstance, float hPrevInstance, int *lpCmdLine, float nCmdShow)
{
MessageBox(0,L"Running.",0,0);
return 0;
}

Интересно, что замена float nCmdShow в double nCmdShow я даю ошибку компоновщика, я полагаю, потому что float 32-битный, а double — нет.

9

Другие решения

У меня была такая же ошибка с Консольное приложение Win32. Исправление было:

  1. открыто проект > Свойства …,
  2. расширять Свойства конфигурации > Linker > система
  3. Задавать SubSystem в Не установлен
  4. Нажмите Хорошо
0

По вопросам рекламы [email protected]