【问题标题】:Cant make sdl work with vcpkg and Visual Studio无法使 sdl 与 vcpkg 和 Visual Studio 一起使用
【发布时间】:2022-09-25 06:46:33
【问题描述】:

我正在尝试在项目中使用 SDL。我使用 vcpkg 来安装库并使用本教程这样做https://www.youtube.com/watch?v=0h1lC3QHLHU&t=306s。 我开始只是像这样包含头文件。

#include <iostream>
#include <SDL2/SDL.h>

int main()
{
    return 0;
}

我按下播放后,程序编译但链接器抛出此错误:

错误 LNK2019 未解析的外部符号 _main 在函数 \"int __cdecl invoke_main(void)\" (?invoke_main@@YAHXZ) Tetris F:\\Coding\\C++\\Tetris\\Tetris\\MSVCRTD.lib(exe_main.obj ) 1

这个警告:

警告 \'packages\' 元素未声明。俄罗斯方块 F:\\Coding\\C++\\俄罗斯方块\\俄罗斯方块\\packages.config 2

警告 C26812 枚举类型 \'SDL_bool\' 没有作用域。首选 \'enum class\' 而不是 \'enum\' (Enum.3)。俄罗斯方块 F:\\games\\vcpkg\\已安装\\x86-windows\\include\\SDL2\\SDL_rect.h 113

你能帮我解决这个问题吗? 我正在使用 Visual Studio 2019 顺便说一句。

我知道理论上的错误是因为链接器没有找到方法 _main 的主体,但我不知道它是否存在,但如果它不是主要方法,我也不知道如何向它添加主体。

  • 问题是您没有描述的构建过程。

标签: c++ visual-studio sdl vcpkg


【解决方案1】:

在包含 SDL 之前放置 #define SDL_MAIN_HANDLED,如下所示:

#define SDL_MAIN_HANDLED
#include <SDL2/SDL.h>

【讨论】: