在环境中添加 SDL2 库时C++“undefined reference to 'WinMain@16'” [duplicate]

"undefined reference to 'WinMain@16'" when adding SDL2 libraries in C++ environment [duplicate]

提问人:Jujimufoo 提问时间:4/1/2023 最后编辑:genpfaultJujimufoo 更新时间:4/1/2023 访问量:54

问:

我一直在尝试让 SDL2 在我的环境中工作,但没有运气。我正在使用带有 MinGW 的 Windows 10 家庭版,在 Eclipse IDE 中为 C/C++ 开发人员工作。

我从这个 GitHub 存储库下载了 SDL2.26.4。

下载并解压缩文件后,我将 SDL2 include 和 lib 文件的内容复制到 C:\MinGW 中的 MinGW 文件夹中。

在我的 IDE 中,我添加了 include 和 library 路径。

enter image description here

enter image description here

我还包含了一些从其他解决方案中建议的链接器标志,但它们没有产生任何影响。

enter image description here

当我运行以下代码时:

#include <iostream>
#define SDL_MAIN_HANDLED
#include <SDL.h>
using namespace std;

int main() {
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}

...我遇到了错误:

C:\Users\User\eclipse-workspace\SDL2 test\Debug/../src/SDL2 test.cpp:12: multiple definition of `main'
C:\MinGW\lib/libmingw32.a(main.o):(.text.startup+0x0): first defined here
C:\MinGW\lib/libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status

我尝试重新创建我的项目,将我的包含和库文件夹放在不同的文件位置,阻止 SDL 重新定义我的“main”功能的不同变体,但没有任何效果。

C++ Eclipse SDL-2 未定义引用 多定义错误

评论

0赞 HolyBlackCat 4/1/2023
请参阅如何在程序中正确使用 SDL2?
0赞 Jujimufoo 4/1/2023
我已经遵循了您提供的链接中提供的每条建议,但仍然遇到“对'WinMain@16'的未定义引用”。我的所有链接器标志都已设置,我的包含文件和库已识别,我已经尝试使用 32 位和 64 位版本的 SDL2 包,但没有取得任何进展。
0赞 Jujimufoo 4/1/2023
在查看了 genpfault 提供的这个 stackoverflow.com/questions/5259714/...答案后,我通过将我的 main() 函数更改为 WinMain() 进行了实验,此时程序就可以编译了。
0赞 HolyBlackCat 4/1/2023
没有必要重命名它。您是否按照序言中帖子的建议删除了?SDL_MAIN_HANDLED
0赞 Jujimufoo 4/2/2023
是的,我从脚本的开头删除了SDL_MAIN_HANDLED。另外,我刚才说得太早了;虽然代码能够编译并执行“Hello World”,但当我开始调用特定于 SDL 的函数时,我遇到了更多“未定义引用'SDL_main'”错误。从那以后,我一直在对这一发展进行故障排除。

答: 暂无答案