gpt4 book ai didi

c++ - mingw 和 SDL 命令行

转载 作者:行者123 更新时间:2023-11-28 07:01:44 24 4
gpt4 key购买 nike

现在我发现这不是一个独特的问题并且之前已经被提出过很多次,但是我遵循了其他堆栈溢出问题中给出的建议但似乎没有任何帮助。

我的问题很简单,我无法编译我的项目(一个基本的 c++ gui)并包含 SDL,因为我得到:对 WinMain@16 的 undefined reference

我开始使用 code::blocks 但它没有用,所以转而尝试在 64 位 windows 7 的命令行上编译最简单的实现,以试图了解后台发生的事情。

我正在运行的命令:

g++ test.cpp -L C:\Projects\C++\tester\SDL\lib -lmingw32 -LSDLmain -LSDL -mwindows

我对 -l 参数有一个奇怪的问题,因为我在 SDL 包含文件夹的路径中添加了 C:\Projects\C++\tester\SDL\includes 但如果我这样做它查出一个错误,说它找不到这个目录,显然我检查并重新检查了路径以确保它是正确的,但是把它留在外面可以消除错误。现在我很可能是我的问题的原因。

this question中的答案非常全面,有助于进一步理解问题但似乎暗示问题是没有定义 main 函数,这似乎有道理,但 SDL 不会在 SDL_main.h 中将 main 重新定义为 SDL_main 吗?

#define main SDL_main

我想指出我是一个 C++ 菜鸟。

#include <string.h> 
#include "SDL\include\SDL.h"
#include <iostream>

int main(int argc, char*argv[])
{
return 0;
}

最佳答案

好的,我发现了你的错误。

您可能知道,-L指定链接路径,同时 -l指定要链接的库。你的命令说:

-L C:\Projects\C++\tester\SDL\lib -lmingw32 -LSDLmain -LSDL -mwindows
^^ ^^

错误地使用了 -L而不是 -l .你打算写:

-L C:\Projects\C++\tester\SDL\lib -lmingw32 -lSDLmain -lSDL -mwindows

编辑:关于 libSDL2。

首先,你需要包含<SDL2/SDL.h> .您还需要链接 -lSDL2main-lSDL2 .

但这里的主要问题是您链接到 -lmingw32 ,它需要一个 32 位架构,而你正在构建和链接 64 位版本的 libSDL2。如果您构建并链接到 32 位版本的 libSDL2,一切都会好起来的。

如果您的 MinGW 安装是 32 位的,那么您只能使用 32 位构建,您需要使用 32 位库。如果是 64 位,-lmingw32需要更换。也许与 -lmingw64 , 但我没有安装 64 位 MinGW 来测试它,我不知道是否 -lmingw64是否真实存在。

关于c++ - mingw 和 SDL 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22355010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com