使用 SDL 时未定义对 WinMain@16 的引用

2023-11-26

我在让一切正常工作方面遇到了很多麻烦,以便我可以开始在 Windows 上进行开发,而不是在 Linux 上进行开发,Linux 是我在编码时通常使用的系统。我在尝试编译 SDL 程序时遇到了一个相当奇怪的问题。一旦我包含 SDL 库,程序就拒绝编译,并给出以下错误:

c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libmingw32.a<main.o>: In function 'main':
C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to 'WinMain@16'
collect2: ld returned 1 exist status

我在控制台上使用 MinGW。

举个例子,使用

gcc -o test main.c

这编译得很好:

#include <stdio.h>
#include <stdlib.h>

int main(int argv, char **argc)
{
    printf("Hello, world!\n");

    return 0;
}

但是一旦我添加#include(即使没有调用任何SDL函数)我就会收到上面提到的错误

Using:

gcc -o test main.c -lSDL

这无法编译:

#include <stdio.h>
#include <stdlib.h>

#include <SDL/SDL.h>

int main(int argv, char **argc)
{
    printf("Hello, world!\n");

    return 0;
}

任何帮助将不胜感激!我读到,对于忘记主要功能的人来说,这是一个常见问题,但显然这不是我的问题。我还听说WinMain是处理Windows图形程序时使用的主要函数,但过去当我更多地在Windows中进行开发时,这对我来说从来不是问题。


我做了一些搜索有关此错误的更多信息,我发现这一页其中包括以下信息:

现在编译它的唯一技巧是添加包含路径(例如:-I../SDL/include)、链接器路径(例如:-L../SDL/lib),然后最后添加库他们自己按正确的顺序。使用:

-lmingw32 -lSDLmain -lSDL

另外,如果您的 IDE 没有自动添加 -mwindows 标志(除了您想要链接的任何其他库之外),请不要忘记添加它。如果您没有按照正确的顺序放置它们,您将收到一个链接器错误,抱怨缺少符号 WinMain@16。

尝试使用上面的这些标志重新编译,看看是否有影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SDL 时未定义对 WinMain@16 的引用 的相关文章

  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • pyodbc 和 mySQL

    我无法使用 pyodbc 连接到 mySQl 数据库 这是我的脚本的片段 import pyodbc import csv cnxn pyodbc connect DRIVER MySQL ODBC 3 51 Driver SERVER l
  • MacOS“配置:错误:无法运行 C 编译的程序”

    我对 MacOS 环境相当陌生 之前在编译 C 脚本时遇到了一些问题 我遇到了以下问题 fatal error stdio h No such file or directory include
  • Angular 4 动画不适用于 Safari iOS 9.3

    我目前正在所有可能的浏览器中测试我的应用程序 我发现角度动画在 Safari iOS 9 3 中的行为与预期不符 下班后 花了几个小时试图解决这个问题 我来寻求帮助 提前致谢 我的代码如下 包 json dependencies angul
  • Spring 3.1 自动装配在自定义约束验证器中不起作用

    我在自定义约束验证器内自动装配 bean 时遇到问题 约束验证器实例不是使用 Spring 的 LocalValidatorFactoryBean 给出的 JSR 303 提供程序是 hibernate validator 4 2 0 Fi
  • 为什么是“using namespace std;”被认为是不好的做法?

    我听说using namespace std 是不好的做法 我应该使用std cout and std cin直接代替 为什么是这样 声明与中的某些内容同名的变量是否存在风险 std命名空间 考虑两个名为 Foo 和 Bar 的库 usin
  • Windows Azure 上的 AspPDF 和 AspJPEG

    我最近开始将 NET 应用程序迁移到 Windows Azure 云服务 我们的应用程序严重依赖于许多 COM 类组件 其中包括 AspPDF 用于 PDF 生成和操作 和 AspJPEG 用于调整图像大小 在典型的非云 IIS 设置中 我
  • 如何将 Rowversion 或 Timestamp SQL Server 数据类型从 SQLDataReader 读取到 C# 变量

    我有一个 SQL Server 2012 数据库 每个表都有一组审计字段 其中一个是名为 RowVer 的列 其数据类型为timestamp 与 一样rowversion 我很难读取 a 的值SqlDataReader到一个 C 对象 其属
  • 在 Docker 容器内运行 Docker:无法连接到 Docker 守护进程

    我创建了一个 Dockerfile 来在 Docker 中运行 Docker FROM ubuntu 16 04 RUN apt get update apt get install y apt transport https ca cer
  • 两个四元数之间的“距离”(或角度大小)?

    我想找到两个四元数之间的 距离 我所说的 距离 是指单个浮点数或整数 而不是另一个四元数 这就是区别 即inverse q1 q2 我想你可以称我想要的为 角幅度 物理对象从原始角度旋转得越远 我就需要对其施加越大的扭矩 我不明白四元数涉及
  • 如何将 ComboBox 的 SelectedItem 绑定到作为 ItemsSource 中项目的副本的对象?

    我正在将 MVVM 模式与 WPF 一起使用 并遇到了问题 我可以将其简化为以下内容 我有一个 CardType 模型 public class CardType public int Id get set public string Na
  • 重写 std:exception 的析构函数

    如果以下情况 则以下程序无法在 g 4 4 中编译 line 8被评论 为什么 看来当我重写时std exception构造函数 我也必须重写它的析构函数 这是什么原因呢 include
  • Scala 中的反函数

    Scala 有没有办法表达任何函数的反函数 例如 如果我有一个函数f像这样 x Int gt x 1 我希望能够编写一个反函数g like f x Int gt x not a valid scala syntax or x Int gt
  • 字符串连接在 SQLite 中不起作用

    我正在尝试执行 SQlite 替换函数 但在函数中使用另一个字段 select locationname p from location 在此片段中 结果是 0 的列表 我本来期望一个字符串 其中包含来自 locationname 的文本和
  • 为什么使用整数而不是长整型?

    我经常看到有关的问题Overflow错误与vba 我的问题是为什么使用integer变量声明而不是仅仅定义所有数值变量 不包括double等 作为long 除非您正在执行类似 for 循环的操作 您可以保证该值不会超过 32 767 限制
  • Windows 上的 Java:如何将文件删除到垃圾箱(使用 JNA)

    我根本没有 Windows API 的经验 所以请原谅我的无知 我想将文件删除到垃圾箱 如何使用JNA以及如何检测这是否不可能 例如 因为文件位于网络共享上 Use com sun jna platform FileUtils代替com s
  • 使用支持 WebGL 的浏览器查看 VRML 文件 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我有一个生成 VRML 1 0 文件的旧应用程序 我想构建一个基于 WebGL 的 Web 界面来显示这些 VRML 文件 有没有简单的方法可以做到
  • 具有 ngFor 元素的 ngModel 的动态 angular2 形式

    我正在尝试创建一个连接到 ngModel 的动态表单 它允许用户根据需要添加更多控件 如下图所示 表单的行为符合预期 但添加一组新控件时除外 因为它会删除先前输入的内容 尽管模型没有改变 我创建了这个plunkr为了展示我正在谈论的行为 这
  • Kerberos、委派以及如何正确执行此操作?

    我有两个独立的自制应用程序 需要在它们之间进行通信 一个是前端应用程序 实际上是 asp net 另一个是会计应用程序的后端接口 后端接口不是专门为此前端创建的 它是许多其他应用程序用来与我们的产品集成的通用接口 为了方便用户 我们希望在前
  • 离散余弦变换DCT实现C

    我试图在 C 中实现正向和反向离散余弦变换 DCT 代码是通过 dct 函数将单个输入像素块变换为变换矩阵 然后通过 idct 功能 请参阅随附的代码 我的 idct 输出是 244 116 244 116 等连续值 从 idct 值的外观
  • 使用 SDL 时未定义对 WinMain@16 的引用

    我在让一切正常工作方面遇到了很多麻烦 以便我可以开始在 Windows 上进行开发 而不是在 Linux 上进行开发 Linux 是我在编码时通常使用的系统 我在尝试编译 SDL 程序时遇到了一个相当奇怪的问题 一旦我包含 SDL 库 程序