【发布时间】:2017-09-12 17:51:52
【问题描述】:
我知道这个问题已经在 StackOverflow 和其他网站上被问过很多次;在查看了这些资源后,我仍然不知所措。
我只是想让 OpenGL 使用 GLFW 在我的机器(Windows 7 64 位)上运行。
我遇到的问题与许多其他人遇到的问题相同:我收到单一链接器错误:“未定义对 '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预编译库)
* include 文件夹包含一个名为 GLFW 的文件夹,其中包含 glfw3.h 和 glfw3native.h(来自下载的 GLFW - 包含文件夹)
我试过了:
* 使用 GLFW 的 64 位版本
* 使用 IDE(Eclipse、VS)
* GLFW Undefined References中的建议
* What is an undefined reference/unresolved external symbol error and how do I fix it? 中的建议(交换链接参数顺序)
* 建议在OpenGL with Eclipse CDT + MinGW + GLEW + GLFW: Undefined References
* 尝试使用 CMake 自己编译库,但没有看到在此过程中创建任何 .a、.lib 或 .dll 文件。
如果其他信息有帮助,请告诉我。
【问题讨论】:
-
我的建议是:不要使用部分路径(-L./lib),而是使用完整路径
-
@Amadeus:感谢您的建议。试一试,但似乎没有任何改变(似乎链接器能够正确定位所有库 - 如果无法定位 glfw3,则会给出不同的错误)。