首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在MSYS2中设置SDL2?我收到错误“未定义对‘WinMain’的引用”

在MSYS2中设置SDL2,可以按照以下步骤进行操作:

  1. 首先,确保你已经安装了MSYS2。如果没有安装,可以从官方网站(https://www.msys2.org/)下载并按照指引进行安装。
  2. 打开MSYS2的终端(MSYS2 MinGW 64-bit),执行以下命令更新系统和软件包:
  3. 打开MSYS2的终端(MSYS2 MinGW 64-bit),执行以下命令更新系统和软件包:
  4. 安装SDL2和开发工具链。执行以下命令:
  5. 安装SDL2和开发工具链。执行以下命令:
  6. 设置环境变量。在终端中执行以下命令:
  7. 设置环境变量。在终端中执行以下命令:
  8. 创建一个SDL2的示例程序。在终端中执行以下命令:
  9. 创建一个SDL2的示例程序。在终端中执行以下命令:
  10. 然后,使用文本编辑器创建一个名为main.cpp的文件,并将以下示例代码复制到文件中:
  11. 然后,使用文本编辑器创建一个名为main.cpp的文件,并将以下示例代码复制到文件中:
  12. 编译和运行示例程序。在终端中执行以下命令:
  13. 编译和运行示例程序。在终端中执行以下命令:
  14. 如果一切顺利,你将看到一个显示白色窗口并持续3秒钟的SDL2示例程序。

关于错误“未定义对‘WinMain’的引用”,这是因为SDL2默认使用Windows的子系统,而MSYS2是一个模拟Linux环境的工具。为了解决这个问题,我们需要在编译时指定SDL2使用控制台子系统而不是Windows子系统。

可以按照以下步骤进行操作:

  1. 在SDL2示例程序的main.cpp文件中添加以下代码:
  2. 在SDL2示例程序的main.cpp文件中添加以下代码:
  3. 这将定义一个名为SDL_main的函数,用于替代默认的WinMain函数。
  4. 修改编译命令,在终端中执行以下命令:
  5. 修改编译命令,在终端中执行以下命令:
  6. 添加了-mwindows参数,它告诉编译器使用控制台子系统而不是Windows子系统。
  7. 重新编译和运行示例程序。在终端中执行以下命令:
  8. 重新编译和运行示例程序。在终端中执行以下命令:
  9. 现在,你应该能够成功编译和运行SDL2示例程序,并且不再收到“未定义对‘WinMain’的引用”错误。

总结:以上是在MSYS2中设置SDL2的步骤。通过安装SDL2和开发工具链,设置环境变量,创建示例程序,并在编译时指定使用控制台子系统,你可以成功在MSYS2中使用SDL2进行开发。如果你需要更多关于SDL2的信息,可以参考腾讯云的SDL2产品介绍链接:SDL2产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

FFmpeg入门及编译

Studio 2022(本地已有) MSYS2 + CMake 2、MSYS2 除了需要安装 VS 之外,还要安装 MSYS2,这是一款 Windows下模拟 Linux 软件。...六、VS 项目中引用 FFmpeg 库 编译好 FFmpeg 库后,下面我们就可以在 VS 引用它了。...) 函数调用 FFmpeg API 了,调用 FFmpeg 库日志函数: #include extern "C" { #include "libavcodec/avcodec.h...,将其中库路径修改为指定输出路径 八、FFmpeg 使用上述编译好库 首先,我们要设置环境变量 PKG_CONFIG_PATH,通过它告诉 FFmpeg 上述几个库从哪儿可以找到,具体设置方法如下...: 在 MSYS2 窗口中打开 .bashrc pacman -S vim vim ~/.bashrc 在 ~/.bashrc 设置环境变量 export PKG_CONFIG_PATH=/d/CMake

1.4K62
  • 云课五分钟-03第一个开源游戏复现-贪吃蛇

    变量,以便CMake能够找到SDL2相关模块。...set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) 这里设置了运行时输出目录,即生成可执行文件将放置在构建目录下bin文件夹...target_link_libraries 函数调用 这行代码用于将目标链接到所需库。这里链接了SDL2多个库(SDL2::Main, SDL2::Net等)以及m库(通常是数学库)。...对于你提供文本,并没有找到具体问题或疑问。如果你有关于这段代码具体问题(例如编译错误、运行错误、逻辑错误或其他疑问),请明确指出,我会尽量为你提供帮助。...从你给出文本看到你提供了关于“DungeonRush”游戏更多详细信息,包括如何在openSUSE和MacOS上安装依赖项,以及如何编译该游戏。

    32830

    VS2015 error LNK2019 无法解析外部符号 _WinMain@16,该符号在函数 “int __cdecl invoke_main(void)”

    前言 上一篇文章,为了编译OpenCV示例代码,然后搭建环境, 最后想直接运行示例demo,在创建新工程时候,直接创建了一个win32窗口项目,然后环境配置完成后,将opencv 示例代码...kalman.cpp直接导入到新建vs工程中进行编译,直接报错: 错误 LNK2019 无法解析外部符号 _WinMain@16,该符号在函数 "int __cdecl invoke_main(void...invoke_main@@YAHXZ) 中被引用 opencvDemo E:\MyWork\VSProject\opencvDemo\opencvDemo\MSVCRTD.lib(exe_winmain.obj...相反,如果是windows程序,就按照相反设置来配置即可,这里就不再赘述了。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.2K10

    lnk2001 lnk1120_lnk1120

    6.当在基类创建了虚函数而没有在基类虚函数做具体实现时将会产生LNK2001错误。解决办法是:①、将该虚函数定义为纯虚函数。②、在基类该虚函数做具体实现。   ...二.由于编译和链接设置而造成LNK2001   1.如果编译时使用是/NOD(/NODEFAULTLIB)选项,程序所需要运行库和MFC库在连接时由编译器写入目标文件模块, 但除非在文件明确包含这些库名...3.使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件“func”引用,在目标文件里即对“__imp__func” 引用。...无法解析外部符号“symbol”,该符号在函数“function”中被引用 在 function 中找到了未定义外部符号 (symbol)。若要解决此错误,请提供符号定义或移除引用代码。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1K20

    让vc编译出程序减小体积

    没走眼吧,就一Hello World就160kb真是要人命啊! 呵呵!上面的情况是笔者所遭遇情况.不过后来了解vc可以通过设置参数来自定义编译方式.为什么文件那么大!...二,设置自己入口点函数 C或C++程序默认入口函数是main()或WinMain(),但我们现在不用什么Main,WinMain.因为这些都不是直接入口点,编译器在产生exe文件时候,将为我们生成真正入口点....下面我们来定义自己入口函数,具体是把main或WinMain改成其它名字(MyFun),打开"Project(工程)--->settings(设置)"选项,选中"link"选项卡,在"Category...在刚才打开"link"选项卡,在下面的"Project options(工程选项)"添加:/align:512(还可以将512设 置更小16,32.....).注意两个参数之间有个空格. 3k了.../warnaserror[+|-] 将警告视为错误 /warn: 设置警告等级 (0-4) (缩写: /w) /nowarn: 禁用特定警告消息 - 语言 - /checked[+|

    2K10

    使用C#+FFmpeg+DirectX+dxva2硬件解码播放h264流

    且代码和引用精简(无其他托管和非托管dll依赖,更无需安装任何插件,你程序完全绿色运行);并且如果硬解不可用,切换到软件是自动过程   首先需要准备好visual studio/msys2/ffmpeg...至于二进制兼容方面考虑,两种做法都不是太好) 代码修改完成后我们使用msys2编译 首先是需要把编译器设置为msvc,这个步骤通过使用vs命令行工具即可,如下图 ?...打开vs编译工具 然后是设置msys2继承环境变量(这样make时才能找到cl/link) ? 设置msys继承环境变量 ?...对此持保留意见(等我程序报错了再说) 将收到数据送入ffmpeg解码并将拿到数据进行展示   这里值得一提是get_format,官方有一个示例,下图 ?...如若不然,你绘制画面会进行意向不到缩放 网络掉包导致硬件解码器错误 见代码 其他directx底层异常 代码加了一个try-catch,捕获异常类型是DirectXException,在c/c

    3.4K11

    VC++6.0入门——第一讲,认识VC++6.0,新建工程等

    证书后HTTPS还是不能访问推荐链接:https://cloud.tencent.com/developer/article/2465228推荐原因:本文详细说明了自己安装了SSL证书后还是报错,下面来说一下解决办法...当Windows操作系统启动一个程序时,它调用就是该程序WinMain函数(实际是由插入到可执行文件启动代码调用)。...比如加入一个程序变量设置一个断点,鼠标右键,加入断点采用调试运行F5快捷键,或者点击图示图标程序运行时候,接收到了命令行参数点击图示按钮,可以停止程序调试关于程序运行时图标,可以参考下面进行设置去掉最小化窗口按钮...DC是一个包含设备(物理输出设备,显示器,以及设备驱动程序)信息结构体,在Windows平台下,所有的图形操作都是利用DC来完成。...Project name:”文本框,输入我们工程名WinMain(如图1.4所示),单击【OK】按钮。

    9820

    JavaScrip最容易犯十大错误及其避免方法()

    反过来,这意味着ItemList将项目定义为未定义,并且您在控制台中收到错误 - “Uncaught TypeError:无法读取未定义属性’map’”。 这很容易解决。...这是因为对于空白对象引用,DOM API返回null。 任何执行和处理DOM元素JS代码都应该在创建DOM元素之后执行。 JS代码按照HTML布局从上到下进行解释。...以下是有关如何在各种环境设置此标头一些示例: Apache 在将从中提供JavaScript文件文件夹,使用以下内容创建.htaccess文件: Header add Access-Control-Allow-Origin...在这种情况下,应用程序将抛出“Uncaught TypeError无法设置未定义属性”。 10....如果使用strict编译器选项,一个好静态类型检查系统(Typescript)可以帮助您避免它们。如果预期类型但尚未定义,它可以警告您。

    16710

    win10 UWP 单元测试 WPF 单元测试异步测试

    命名是叫 测试 在新建单元测试右击引用 ? 把工程引用 ? 打开测试项目 一般测试哪个类就会新建一个类名称和要测试类相同,类里面函数和要测试函数名相同。...在做一个windows Markdown,里面有函数把剪贴文本覆盖Textbox选文本,不知道这个函数写是不是,于是就在单元测试,新建一个类 测试函数所在类是winmain,所以在单元测试新建一个类...我们还要做一些诡异测试,也就是程序考虑不到 出现错误 Index and length must refer to a location within the string....这样就是我们函数有问题,测试就是保证程序是正确,也就是在正常输入是正确不特殊输入还可以做一些可以把特殊输入变为正常,或者其他,就是不让程序直接就异常了。...,可以新建一个控制台项目,然后右击引用 ?

    93420

    【程序源代码】《金庸群侠传》C++复刻版

    关键字:《金庸群侠传》C++复刻版 这是一个以SDL2为基础实现2D游戏框架,同时相当于提供了一个使用该框架制作DOS游戏《金庸群侠传》移植版范例。...安装说明 架构简单说明 一:公共部分 1、Engine封装了一套SDL2主要实现,与SmallPot类似。更换绘图引擎,则只需修改此部分即可。...2、Save所有数据进行了封装,可以较为方便地调用。 3、TextureManger是一个纹理管理器,因为《金庸群侠传》贴图是含偏移设置,故有些特殊地方。...三:视频 这是作者编写一个视频播放器,可以将其编译为动态库,作为SDL2插件,用于进行视频过场播放。如果难以处理,可以将预处理定义宏WITH_SMALLPOT删除。...六:使用到其他开发库 1、以下库在Windows下建议使用vcpkg或者msys2来安装,或者也可以去官网下载,请自行选择。

    1.7K00

    win10 UWP 单元测试

    右击解决方案,添加新项目 C#->Windows->通用->单元测试应用 命名是叫 测试 在新建单元测试右击引用 把工程引用 打开测试项目 一般测试哪个类就会新建一个类名称和要测试类相同...在做一个windows Markdown,里面有函数把剪贴文本覆盖Textbox选文本,不知道这个函数写是不是,于是就在单元测试,新建一个类 测试函数所在类是winmain,所以在单元测试新建一个类...函数需要测试输入一个文本是否会把选择 string 替换输入文本小函数。...,不需要一个个来,可以使用下面的方法执行测试类所有方法 可以在运行 所有测试 如果看到下面的图,那么 测试通过 我们还要做一些诡异测试,也就是程序考虑不到 出现错误 Index and length...这样就是我们函数有问题,测试就是保证程序是正确,也就是在正常输入是正确不特殊输入还可以做一些可以把特殊输入变为正常,或者其他,就是不让程序直接就异常了。

    35320

    CC+角角落落 第二辑 002

    当Windows操作系统启动一个程序之后,由编译器插入到可执行文件启动代码(之前还干了一堆事情,初始化各个段,初始化堆、栈等)调用WinMain函数启动应用程序。...WinMain函数是一个标准API函数,你需要一个声明,它被包含在标准库头文件。...我们需要将消息进行翻译简化(使用TranslateMessage函数)然后发送到窗体消息队列(DispatchMessage函数)让窗体消息处理函数简化了消息进行处理并做出反应。...我们在窗体类写入了一个消息处理函数(一个函数指针),窗体类被注册后,系统会在窗体收到消息之后自动调用该消息处理函数以处理消息。...现在我们有如此多语言(Java、Python等)和相应编译器,他们大多是基于API函数才能在Windows平台上施展拳脚(各类编译器在当前平台上使用C++加上Windows SDK编写编译),底层有一定了解可以让我们注意到那些语言和语法更本质内容

    87350

    Win32话框程序(2)

    接着Win32话框程序(1)来写 ,解决遗留问题,即理解函数及其调用关系。...文章中有些地方是自己推断,因此肯定有叙述不准确甚至错误地方,请指正,感谢~  *******************************正文分割*************************...*********** WinMain函数 Win32话框程序(1)说了WinMain是应用程序入口,其输入参数有四个,根据MSDN上叙述: 输入变量声明 说明 HINSTANCE    hInstance...WM_INITDIALOG等为消息,由操作系统传递给程序,根据MSDN,WM_INITDIALOG消息是在对话框马上要显示前(即对话框内存已经准备好了,但还没有显示在屏幕上)发给程序,程序可以在此时执行一些初始化操作...,时刻等待操作系统传递消息进来,根据不同消息将控制权交予不同函数,包括初始化和关闭函数,当然实现功能最主要在函数Main_OnCommand,对话框中有菜单和不同控件,通过ID他们进行标示,如果用户他们进行了某种操作

    1.2K30

    【程序源代码】《金庸群侠传》C++复刻版

    关键字:《金庸群侠传》C++复刻版 这是一个以SDL2为基础实现2D游戏框架,同时相当于提供了一个使用该框架制作DOS游戏《金庸群侠传》移植版范例。...架构简单说明 一:公共部分 1、Engine封装了一套SDL2主要实现,与SmallPot类似。更换绘图引擎,则只需修改此部分即可。 2、Save所有数据进行了封装,可以较为方便地调用。...3、TextureManger是一个纹理管理器,因为《金庸群侠传》贴图是含偏移设置,故有些特殊地方。...三:视频 这是作者编写一个视频播放器,可以将其编译为动态库,作为SDL2插件,用于进行视频过场播放。如果难以处理,可以将预处理定义宏WITH_SMALLPOT删除。...六:使用到其他开发库 1、以下库在Windows下建议使用vcpkg或者msys2来安装,或者也可以去官网下载,请自行选择。

    2.8K00

    【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”

    本系列博文几乎没有难啃“专业术语”,尽量让读者能够看明白文章所述内容,是本系列博文核心宗旨之一。(由于本人也是由于项目需要,所以才来查阅相关资料,文中出现错误欢迎指出,共同进步!谢谢!)...,lpCursorName 设置为以下值: ?...DefWindowProc用窗口过程接收到相同参数调用。...,y坐标 lpString:字符串指针,指向字符串 c:字符串长度 —————————————————————————————————— HDC 引用文档解释: HDC代码是设备上下文句柄,这是...在创建窗口之后,但在该窗口变为可见之前,新窗口窗口过程会收到此消息。

    1K20

    (译)SDL编程入门(1)Hello SDL

    如果链接器抱怨找不到 -lSDL 或 SDL2.lib,这意味着库文件不在链接器寻找库文件地方。如果链接器抱怨说有未定义引用,可能意味着它从未被告知要链接库。...建议使用MinGW搭建Windows上C语言开发环境,详情可阅读译者博客《程序员C语言快速上手——环境准备篇(一)》 设置好SDL后,我们将介绍如何创建SDL2窗口。...我们还将包含C标准IO来打印错误到控制台。你可能更习惯于使用iostream,但我在应用程序中使用printf,因为它更安全。对于这些早期应用,使用你最习惯东西。...很重要一点是,函数参数是一个整数,后面是一个char*数组,返回类型是一个整数。任何其他类型main函数都会导致main未定义引用。SDL需要这种类型main,所以它能兼容多种平台。...当出现错误时,我们要把发生事情打印到控制台,否则应用程序只会闪烁一秒钟,然后就会消失。 如果你从来没有使用过printf,它代表是打印格式。它将第一个参数字符串与下面参数变量一起打印出来。

    2.9K40

    HGE系列之一 初窥门道

    而我,一个游戏编程颇有兴致平庸之辈,恰好在某次网上混迹期间了解到了HGE这个名词,接着也顺势了解了一些有关HGE零星知识,遂感觉有些话儿想拿出来分享分享,正好网上有关HGE信息比较缺失( 不信可以...ESC键则继续执行,即返回FALSE return false; } //标准WinMain函数 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int...( HGE在此其实是使用了一个简单引用计数 :) ) hge = hgeCreate(HGE_VERSION); // 设置我们程序帧函数,即先前编写FrameFunc函数 // 调用System_SetState...函数尝试以 // 上面设置各种状态初始化系统. // 如果出现了错误该函数便返回FALSE // 并且你可以调用System_GetErrorMessage函数 // 来获取具体错误信息 if...),不过对于HGE其他内容,高端一些使用或者是其实现源码,以后有时间一定一一奉上,大家一起学习嘛,这不正如刘未鹏大牛所言:书写是一种更好学习!不过现在,得说:下次再见喽 :)

    1.3K20
    领券