本文介绍了如何从Linux for Windows与SDL2交叉编译的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在我的Arch Linux(64位)上用mingw-w64-g++编译器编译一个使用SDL2的简单C++程序。

为此,我从here下载了SDL2-devel-2.0.4-mingw.tar.gz

程序.cpp:

#include <SDL.h>

int main ()
{
    SDL_Init (SDL_INIT_VIDEO);

    SDL_Window *sdlWnd = SDL_CreateWindow ("Test", SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED, 800, 600, 0);

    SDL_Event event;
    bool running = true;

    while (running) {
        while (SDL_PollEvent (&event)) {
            if (event.type == SDL_QUIT) {
                running = false;
                break;
            }
        }
    }

    return 0;
}

生成文件:

GPP = x86_64-w64-mingw32-g++
prog.exe: prog.o
    $(GPP) -o prog.exe prog.o -LSDL2-2.0.4/lib/x64 -lSDL2main -lSDL2
prog.o: prog.cpp
    $(GPP) -o prog.o -c -ISDL2-2.0.4/include prog.cpp

现在执行操作时出现错误:

x86_64-w64-mingw32-g++ -o prog.exe prog.o -LSDL2-2.0.4/lib/x64 -lSDL2main -lSDL2
Warning: corrupt .drectve at end of def file
SDL2-2.0.4/lib/x64/SDL2main.lib(./x64/Release/SDL_windows_main.obj):(.text[main]+0x1c): undefined reference to `SDL_main'
为什么未定义对`SDL_Main‘的引用?尽管我指定了-lSDL2main?

我做错了什么?:(

推荐答案

好的,因为Main函数签名,所以必须声明为:

int main(int argc, char *argv[])

根据official SDL FAQ

这篇关于如何从Linux for Windows与SDL2交叉编译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 17:45