Код Visual Studio "неопределенная ссылка на` WinMain @ 16 '" - PullRequest
0 голосов
/ 01 ноября 2018

, поэтому я пытаюсь создать приложение для рабочего стола Windows с c ++ в коде Visual Studio и использую MinGW в качестве компилятора. У меня есть файл с именем test.cpp в папке с именем src :

#ifndef UNICODE
#define UNICODE
#endif 
#include <windows.h>

int wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR lpCmdLine, 
int nCmdShow){

  const wchar_t name[] = L"Test";

  WNDCLASS wc = {};
  //wc.lpfnWndProc = WindowProc;
  wc.hInstance = hInstance;
  wc.lpszClassName = name;

  RegisterClass(&wc);

  HWND hWnd = CreateWindowEx(
    0, 
    name, 
    L"Window", 
    WS_BORDER, 
    CW_USEDEFAULT, 
    CW_USEDEFAULT, 
    1200, 
    720, 
    0, 
    0, 
    hInstance, 
    0);

  if(hWnd == NULL){
    return 0;
  }

  ShowWindow(hWnd, nCmdShow);
}

Но когда я компилирую, я получаю эту ошибку:

> Executing task: g++ -g test.cpp -o test.exe <

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
The terminal process terminated with exit code: 1

У меня также есть tasks.json и launch.json в папке .vscode :

tasks.json

"version": "2.0.0",
"tasks": [
  {
    "label": "test",
    "type": "shell",
    "command": "g++",
    "options": {
      "cwd": "${workspaceFolder}/src"
    },
    "args": [
      "-g", "test.cpp", "-o", "test.exe"
    ],
    "group": {
      "kind": "build",
      "isDefault": true
    }
  }
]

Launch.json

"version": "0.2.0",
  "configurations": [
  {
    "name": "(Windows) Launch",
    "type": "cppvsdbg",
    "request": "launch",
    "program": "${workspaceFolder}/src/test.exe",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}/src",
    "environment": [],
    "externalConsole": true,
    "preLaunchTask": "test"
  }
]

Проблема в том, что когда я создаю файл с функцией main , он компилируется нормально, но когда это делается с wWinMain , возникает ошибка, и я не знаю, как почини это. Буду очень признателен, если кто-нибудь сможет мне помочь с этим.

1 Ответ

0 голосов
/ 01 ноября 2018

WinMain @ 16 обычно появляется, когда вы пытаетесь скомпилировать некоторые файлы, которые не содержат функцию main()/WinMain() (начальная точка программы). В вашем случае, если вы не включили исходный файл с функцией main()/WinMain(), это вызвало у вас проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...