gpt4 book ai didi

c++ - 我在 Qt Creator 中不断收到 "Undefined reference to WinMain@16"

转载 作者:行者123 更新时间:2023-11-28 02:53:34 24 4
gpt4 key购买 nike

我正在尝试在 Qt Creator 3.1 中使用 SDL 2.0,在 Windows 7 中使用 Qt Build Suite (QBS)。

我已将链接放在我的 .qbs 中以定位 SDL 文件夹,我认为一切正常,因为在我的 main.cpp 中它正在识别 SDL 函数,并尝试自动完成它们。

问题是,每当我尝试编译时,我都会得到“对 WinMain@16 的 undefined reference ”

我正在使用 MinGW 并在编译器首选项中将链接器标记设置为:-lmingw32 -lSDL2main -lSDL2 -mwindows

输出是:

 c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/libmingw32.a(main.o): In function `main':
e:\p\giaw\src\pkg\mingwrt-4.0.3-1-mingw32-src\bld/../mingwrt-4.0.3-1-mingw32-src/src/libcrt/crt/main.c:91: undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status

我的 .qbs 是:

import qbs 1.0

CppApplication {

name: "testeSDL2"

cpp.includePaths: [".",
"C:/SDL2-2.0.3/i686-w64-mingw32/include"]

cpp.libraryPaths: [
"C:/SDL2-2.0.3/i686-w64-mingw32/lib"]

cpp.dynamicLibraries: "SDL2"

files: [
"main.cpp"
]

qbsSearchPaths: "C:/CppLibs/"
}

我一直在搜索很多,只找到使用 .pro 而不是 .qbs 的常见 Qt 项目的答案...SDL 站点中有一个部分说这是链接器问题,但我将它们设置为首选项窗口,我猜我还需要在 .qbs 文件中以某种方式设置它们,但我不知道如何设置。谁能帮忙?

最佳答案

我记得,SDL 定义了一个宏 main,它扩展为一些 SDL 特定的函数名称。

找到那个宏定义,你也会找到禁用那个东西所需的宏符号。

哦,好吧,也许这应该是评论而不是答案,但是当/如果您发现(抱歉,我没有时间检查这些来源),那么您可以将其标记为“解决方案”,呵呵。 :-)


附录:由于 OP 友善地发布了 SDL 代码,我查看了它并发现了这条评论:

“If you provide your own WinMain(), you may define SDL_MAIN_HANDLED

…在包含 SDL header 之前。

然后调用main的宏没有定义。

关于c++ - 我在 Qt Creator 中不断收到 "Undefined reference to WinMain@16",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517051/

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