小编Fel*_*leg的帖子

在 Windows 上的 Code::Blocks 中编译 SDL2 + OpenGL + GLAD 项目:未定义的引用

我正在检查创建使用 OpenGL 代码的 Windows 应用程序的不同变体。我对 OpenGL Core Profile(所谓的“现代 OpenGL”)特别感兴趣。我正在使用 Code::Blocks 作为我的 IDE。

\n\n

首先,我编写了一个简单的 WinAPI 应用程序。它工作得很好,直到我尝试运行一些核心代码。这告诉我,如果我想在 Windows 中使用现代 OpenGL,WinAPI 在这里不起作用,因为它是通过立即模式修复的。

\n\n

因此,我的下一步是使用 GLFW + GLAD 制作一个项目(在https://glad.dav1d.de/站点上生成)。在这种方法中,OpenGL 函数存在一些未解析的符号,但 GLAD 修复了这个问题,我的项目也完成了。编译运行没有问题。

\n\n

这次我想测试 SDL 变体。我下载了 SDL2 标头和库,并将它们放入 C::B 安装中的正确文件夹中。起初,我编写了一个简单的仅 SDL2 应用程序,它运行良好,这表明我在构建选项中包含库和链接不会让编译器因我的代码而阻塞。

\n\n

现在我添加了一些使用 opengl 核心功能的代码。最初编译该代码会导致编译器抱怨这些函数。我通过再次添加 GLAD 解决了这些问题,就像我之前的项目一样,它工作正常,但只能编译。当尝试链接我的程序时,编译器会抛出很多这样的错误:

\n\n
g++.exe  -o bin\\Debug\\OpenGL_SDL.exe obj\\Debug\\glad.o obj\\Debug\\main.o  -static-libstdc++ -static-libgcc -static -lmingw32 -lSDL2main -lSDL2 -lglew32 -opengl32 -lglu32 -mwindows  \nC:/Program Files/CodeBlocks/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/../lib\\libSDL2.a(SDL_hidapi.o): In function `PLATFORM_hid_enumerate\':\n/Users/valve/release/SDL/SDL2-2.0.12-source/foo-x64/../src/hidapi/windows/hid.c:354: undefined reference to `__imp_SetupDiGetClassDevsA\'\n/Users/valve/release/SDL/SDL2-2.0.12-source/foo-x64/../src/hidapi/windows/hid.c:354: undefined reference to `__imp_SetupDiEnumDeviceInterfaces\'\n/Users/valve/release/SDL/SDL2-2.0.12-source/foo-x64/../src/hidapi/windows/hid.c:378: undefined reference to `__imp_SetupDiGetDeviceInterfaceDetailA\'\n/Users/valve/release/SDL/SDL2-2.0.12-source/foo-x64/../src/hidapi/windows/hid.c:415: undefined …
Run Code Online (Sandbox Code Playgroud)

c++ opengl gcc codeblocks sdl-2

2
推荐指数
1
解决办法
2702
查看次数

标签 统计

c++ ×1

codeblocks ×1

gcc ×1

opengl ×1

sdl-2 ×1