Makefile 与i686-w64-mingw32-g+交叉编译+;并使用main()作为入口点

Makefile 与i686-w64-mingw32-g+交叉编译+;并使用main()作为入口点,makefile,cross-compiling,main,mingw-w64,winmain,Makefile,Cross Compiling,Main,Mingw W64,Winmain,我正在使用普通的g++在make目标中编译Linux,在单独的make目标中使用i686-w64-mingw32-g++编译windows。如果使用main(),则会生成g++目标,而windows目标会失败,原因是: /build/i686-w64-mingw32-i686-w64-mingw32-crt//mingw-w64-crt/crt/crt0\u c.c:18:未定义的参考`WinMain@16“ 我尝试了上面链接中的两种解决方案,但都不起作用 以下是我的windows构建目标:

我正在使用普通的
g++
在make目标中编译Linux,在单独的make目标中使用
i686-w64-mingw32-g++
编译windows。如果使用main(),则会生成g++目标,而windows目标会失败,原因是:

/build/i686-w64-mingw32-i686-w64-mingw32-crt//mingw-w64-crt/crt/crt0\u c.c:18:未定义的参考`WinMain@16“

我尝试了上面链接中的两种解决方案,但都不起作用

以下是我的windows构建目标:

RayCaster1.cpp SDLWrapper.cpp-I/usr/local/i686-w64-mingw32/include-L/usr/local/i686-w64-mingw32/lib-lmingw32-lSDL2-lSDL2_ttf-static libgcc-static libstdc++-Wl,-Bstatic-lstdc++-lpthread-Wl,-Bdynamic-o testWindows.exe

添加-mwindows或-Wl,-subsystem,windows并没有为我解决这个问题。我试着把其中一个放在末尾、开头、中间。我的windows build目标已经变得非常臃肿,我是不是在用另一个标志破坏它

以下是我的主要功能:

int main(int /*argc*/, char */*argv*/[])
{
    SDLWrapper sdlWrapper;

    initRasterPixels();
    sdlWrapper.setupSDLRenderer(WINDOW_WIDTH, generateRaster);
    return 0;
};

使用
-mconsole
而不是
-mwindows

您是否确实有
主功能?发布一条和确切的构建命令会改善问题,通常您不应该放置那些include和library路径;如果编译器安装正确,默认情况下它会在那里搜索(但可能您有一个特殊的安装)是的,我有一个这样的函数:int main(int/*argc*/,char*/*argv*/[])如果我将其更改为WinMain,那么我的windows使目标工作,我有一个windows可执行文件,所以您不应该使用
-mwindows
,这意味着要寻找WinMain@M.M我可能需要修改我的路径来简化我的build命令,我只是很高兴能够进行交叉编译。我的linux构建目标更短、更清晰,只是
g++RayCaster1.cpp SDLWrapper.cpp-lSDL2-lSDL2\u ttf-o test.exe