我无法弄清楚“对Winmain @ 16错误的未定义引用”

时间:2018-08-29 22:50:06

标签: c++ json

在开始之前,我知道堆栈上还有许多其他问题与我的相同。相信我,我已经检查了所有的对象,如果他们以任何形式帮助了我,我不会问这个问题。另外,我非常希望得到一个易于理解的答案,因为在查看其他问题时,我花了10分钟的时间才看清楚它们的含义。话虽如此,让我们解决我的问题。

我正在尝试使SDL与Visual Studio Code一起使用(不是Visual Studio。我的计算机没有足够的空间用于Visual Studio,或者我正在使用它。)我在task.json文件中试图将SDL2.lib库链接到我正在使用的文件main.cpp(我正在使用c ++)。我已经将SDL include和lib文件夹中的所有文件移到了我的mingw bin文件夹中。这是我的task.json文件:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "g++",
            "args": [
               "-g",
               "-o",
               "-c",
               "C:/MinGW/bin/main.cpp",
               "C:/MinGW/bin/SDL2.lib",
               "-lmingw32"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": [
                "$gcc"
            ]
        },
    ]
}

这是我的main.cpp文件:

#include "windows.h"
#include "SDL.h"
#include <iostream>

int main(int argc, char** argv) {

    SDL_Init(SDL_INIT_EVERYTHING);

    return 0;
}

我收到以下错误:

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

据我所知,此错误相当普遍,但我一直保持跟踪,并且在过去的两周中,我尝试了37种不同的方法来解决此问题(包括有关此问题的其他解决方案) 。我不知道问题出在哪里,但也许有人可以解决。我已经在其他四个论坛上发布了此消息,但没有任何回复,我很失落。现在真的很难热心,但是请提前回应并谢谢!!

1 个答案:

答案 0 :(得分:1)

在添加SDL之前尝试添加此行:

#define SDL_MAIN_HANDLED

查看此处以获取更多详细信息:

undefined reference to `WinMain@16'