【问题标题】:Fail to use SDL with MinGW on windows无法在 Windows 上将 SDL 与 MinGW 一起使用
【发布时间】:2015-09-12 07:26:53
【问题描述】:

我想开始学习使用 SDL 编程。所以我为windows下载了x86, 将所有 lib 和包含在 MinGW 中。但是当我编译时它不知道 SDL 函数存在。

# define SDL_MAIN_HANDLED  // somehow it want it to not define its own main 

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

using namespace std;

int main( int argc, char* argv[] ) {
    SDL_SetMainReady(); // just for check 
    return 0;
}

我读到链接需要按特定顺序(mingw32、SDL2main 和 libSDL2),但我认为 Eclipse 运行了错误的编译命令。

eclipse命令:

g++ -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\fire.o" "..\\src\\fire.cpp" 
g++ -o fire.exe "src\\fire.o" -lmingw32 -lSDL2main -llibSDL2 
src\fire.o: In function `main':
C:\Or\C++\Projects\fire\Debug/../src/fire.cpp:16: undefined reference to `SDL_SetMainReady'
collect2.exe: error: ld returned 1 exit status

你觉得我错过了什么吗?

【问题讨论】:

标签: c++ eclipse windows compiler-errors sdl


【解决方案1】:

我认为您需要将 -llibSDL2 更改为 -lSDL2。

【讨论】:

  • 如果是这个原因,首先会导致不同的链接器错误。
  • 一开始我以为你是对的,但后来我改了它,它不起作用\=感谢您的尝试。
  • 好吧,那么我的下一个嫌疑人将是 include SDL 行。我想你可以尝试使用绝对路径来代替(在“”而不是内)只是为了确保。
【解决方案2】:

好的,我解决了。我不确定问题是缺乏对 32 位的支持,还是 minGW 和 SDL 来自可能不匹配的不同编译器的事实..

但我所做的是从我的电脑中删除 minGW 并下载 WinBuild。 WinBuild 它是一个提供大量库和工具的下载管理器,包括 minGW64 位和 SDL。 优点是它们都是从具有相同配置的相同编译器编译的。

之后,我将 minGW 的路径更改为 WinBuild 文件夹中的新 64 位路径,将 Winbuild 中的 g++ 添加到路径中并重新启动。

然后,添加和链接工作没有任何问题! 我仍然需要将# define SDL_MAIN_HANDLED 放在开头以使其工作,但它工作!

【讨论】:

    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    相关资源
    最近更新 更多