我只是想让 OpenGL 使用 GLFW 在我的机器(Windows 7 64 位)上运行。
我收到了单数链接器错误:
undefined reference to 'glfwInit'.
我试图编译的代码是最简单的(在文件 Test.cpp 中)。
#include <iostream>
#include <GLFW/glfw3.h>
int main()
{
std::cout << "hello world" << std::endl;
glfwInit();
return 0;
}
我正在使用一个简单的 Makefile 来尝试编译:
Test: Test.o
g++ -o Test -L./lib -lglew32 -lglfw3 -lopengl32 -lglu32 -lgdi32 Test.o
Test.o: Test.cpp
g++ -I./include -c Test.cpp
附加信息:
- 使用g++编译(MinGW32)
- lib 文件夹包含 glfw3.dll、libglfw3.a 和 libglfw3dll.a(从 GLFW 网站下载的 Win32 版本 - Windows 预编译库)
- 包含文件夹包含一个名为 GLFW 的文件夹,其中包含 glfw3.h 和 glfw3native.h(来自下载的 GLFW - 包含文件夹)
我努力了:
- 使用 GLFW 的 64 位版本
- 使用 IDE(Eclipse、VS)
- GLFW 未定义参考 中的建议
- 什么是未定义的引用/未解决的外部符号错误以及如何修复中的建议? (交换链接参数顺序)
- 在 OpenGL 中使用 Eclipse CDT + MinGW + GLEW + GLFW 的建议:未定义的参考
- 尝试使用 CMake 自己编译库,但没有看到在此过程中创建的任何 .a、.lib 或 .dll 文件。
原文由 Matt Martin 发布,翻译遵循 CC BY-SA 4.0 许可协议
终于在 几个 小时后发现了我的问题。
将 libglfw3.a 文件留在与 glfw3.dll 相同的目录中(如果尝试动态链接)会混淆链接器。如果动态链接,请删除它 - 您只需要 dll 和 /include 文件夹。
另外,添加
如果与 DLL 链接,则在 include 语句上方。