使用 i686-w64-mingw32-g++ 交叉编译并使用 main() 作为入口点
Cross compile with i686-w64-mingw32-g++ and use main() as entry point
我正在为我的 linux 可执行文件使用纯 g++
在 make 目标中为 Linux 编译,为 windows 在单独的 make 目标中使用 i686-w64-mingw32-g++
.如果我使用 main(),g++ 目标构建并且 windows 目标失败并显示:
./build/i686-w64-mingw32-i686-w64-mingw32-crt/./mingw-w64-crt/crt/crt0_c.c:18: undefined reference to `WinMain@16'
Similar question
我尝试了上面 link 中的两个解决方案,但都没有用。
这是我的 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 构建目标变得非常臃肿,我是不是在用另一个标志来搞砸它?
这是我的主要功能:
int main(int /*argc*/, char */*argv*/[])
{
SDLWrapper sdlWrapper;
initRasterPixels();
sdlWrapper.setupSDLRenderer(WINDOW_WIDTH, generateRaster);
return 0;
};
使用 -mconsole
代替 -mwindows
。
我正在为我的 linux 可执行文件使用纯 g++
在 make 目标中为 Linux 编译,为 windows 在单独的 make 目标中使用 i686-w64-mingw32-g++
.如果我使用 main(),g++ 目标构建并且 windows 目标失败并显示:
./build/i686-w64-mingw32-i686-w64-mingw32-crt/./mingw-w64-crt/crt/crt0_c.c:18: undefined reference to `WinMain@16'
Similar question
我尝试了上面 link 中的两个解决方案,但都没有用。
这是我的 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 构建目标变得非常臃肿,我是不是在用另一个标志来搞砸它?
这是我的主要功能:
int main(int /*argc*/, char */*argv*/[])
{
SDLWrapper sdlWrapper;
initRasterPixels();
sdlWrapper.setupSDLRenderer(WINDOW_WIDTH, generateRaster);
return 0;
};
使用 -mconsole
代替 -mwindows
。