【发布时间】:2020-10-09 13:21:43
【问题描述】:
*这是我 20 多年来的第一门编程课程,所以我基本上一无所知。
我正在尝试完成课程中的最后一个项目,其中包括安装和配置 SDL。现在我只有基本的“Hello World”代码。添加 #include 时出现错误。
当我安装 SDL 时,我将 SDL2 文件夹和整个 lib 文件夹复制到 MinGW-w64 - 按照教程的说明。
我安装了 MinGW-w64。这是构建错误:
C:/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32 .a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x2e): 未定义对“WinMain”的引用
collect2.exe:错误:ld 返回 1 退出状态
我已经在谷歌上搜索了几个小时,但似乎找不到任何帮助。*
编辑:
非常感谢你们的快速回复。
Here is what I did in settings:
我需要在这些项目前面加上“l”吗?
我在其他地方得到了一些帮助并添加了#define SDL_MAIN_HANDLED。这允许项目构建,但它仍然没有运行。当我尝试运行它时,我什么也得不到。我尝试调用 SDL_GetError(),但仍然没有。
【问题讨论】:
-
您忘记链接
-lSDL2main(您需要以下链接器标志,按此顺序:-lmingw32 -lSDL2main -lSDL2)。还要确保您使用的是正确的预构建库(您的编译器是 x64,确保您的 SDL 也是为 x64 构建的)。 -
关于编辑:
SDL_MAIN_HANDLED不是使用 SDL 的预期方式。如果您不喜欢 SDL 替换 main,则可以使用它,但预期的方法是链接-lSDL2main。它不会阻止您的代码运行,所以问题出在其他地方。如果您手动启动 .exe(通过在资源管理器中双击)而不是从 Eclipse 启动,它会运行吗? -
我明白了!我忘记将 SDL2.dll 文件复制到 MinGW bin 文件夹中。现在完美运行!
-
将它放在与您的 .exe 相同的目录中也应该可以。请记住,您将向其分发应用程序的人不会安装 MinGW。
-
啊哈。我以前也读过,但他们没有清楚地解释你为什么这样做。那具体在哪里?那是src文件夹吗?