我正在学习opengl,想使用代码块IDE,因为Visual Studio似乎太滞后和缓慢。在启动一个控制台应用程序项目后,我试图链接GLFW3库,使以下代码运行:
#include <GLFW/glfw3.h>
#include <thread>
int main()
{
glfwInit();
std::this_thread::sleep_for(std::chrono::seconds(1));
glfwTerminate();
}
我使用的是MinGW的GNU GCC 32位编译器(一个自带代码块安装的编译器)。我很确定我做的每件事都是正确的,我已经通读了我能找到的解释如何为opengl设置代码块的每一篇文章。我链接了libglfw3.a和libglfw3dll.a,并为编译器和链接器设置了正确的搜索目录,但无论如何,我总是得到这个未定义的引用错误:
-------------- Build: Debug in glfw_again_test (compiler: GNU GCC Compiler)---------------
g++.exe -L"C:\Program Files\CodeBlocks\MinGW\lib" -o bin\Debug\glfw_again_test.exe obj\Debug\main.o "C:\Program Files\CodeBlocks\MinGW\lib\libglfw3.a" "C:\Program Files\CodeBlocks\MinGW\lib\libglfw3dll.a" "C:\Program Files\CodeBlocks\MinGW\x86_64-w64-mingw32\lib\libopengl32.a"
obj\Debug\main.o: In function `main':
C:/dev/OpenGL/CodeBlocks/glfw_again_test/main.cpp:6: undefined reference to `glfwInit'
C:/dev/OpenGL/CodeBlocks/glfw_again_test/main.cpp:8: undefined reference to `glfwTerminate'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 1 second(s))
3 error(s), 0 warning(s) (0 minute(s), 1 second(s))
我不知道我还能尝试什么来解决这个问题。
1条答案
按热度按时间643ylb081#
显然我错了,以为我用的是32位的MinGW编译器,但看起来我不小心安装了一个64位的带有代码块的编译器。在切换到mingw gcc 32位编译器并重建(简单的构建会导致错误)我的项目后,我终于让它工作了(不完全是这个代码片段,而是另一个示例)。