我尝试在Qt Creator 3.1中使用SDL 2.0,使用Windows 7中的Qt Build Suite(QBS)。
我已将链接放在我的.qbs中以找到SDL文件夹,我认为一切正常,因为在我的main.cpp中它识别SDL功能,尝试自动完成它们。
问题是,每当我尝试编译时,我都会得到对WinMain @ 16'
的未定义引用我使用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网站上的一个部分说它是' sa链接器问题,但我在首选项窗口中设置它们,我的猜测是我还需要在.qbs文件中以某种方式设置它们,但我不知道如何这样做。有人可以帮忙吗?
答案 0 :(得分:2)
我记得,SDL定义了一个扩展为SDL特定函数名的宏main
。
找到该宏定义,您还可以找到禁用该内容所需的宏符号。
哦,也许这应该是一个评论而不是一个答案,但是如果你发现了(抱歉我没有时间检查这些来源),那么你可以将其标记为“解决方案”,他。 : - )
附录:由于OP亲切地发布了SDL代码,我看了它并发现了这个评论:
“如果您提供自己的
WinMain()
,则可以定义SDL_MAIN_HANDLED
”
...包括SDL标题之前。
然后没有定义名为main
的宏。