我只是想让OpenGL在我的机器(64位Windows 7)上运行GLFW。
我收到了唯一的链接器错误:
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预编译库)
- Include文件夹包含一个名为GLFW的文件夹,其中包含glfw3.h和glfw3native.h(来自下载的GLFW-Include文件夹)
我试过了:
- 使用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文件。
4条答案
按热度按时间kninwzqo1#
几个小时后,我终于解决了我的问题。
将libglfw3.a文件留在与glfw3.dll相同的目录中(如果尝试动态链接)会混淆链接器。如果动态链接,则将其删除-您所需要的只是DLL和/Include文件夹。
另外,添加
如果链接到DLL,则位于INCLUDE语句上方。
myzjeezk2#
应该行得通
hmmo2u0o3#
如果您正确地将所有库与GCC链接在一起,并且没有出现错误,但它只是没有定义像“glfwInit()”这样的函数,请检查您有什么版本的MinGW。如果你使用86x版本的MinGW,那么库也必须是86x。64x可能也是这样,但我还没有检查。
要检查MinGW的版本,请在命令行中使用
gcc --version
命令。我一整天都在试图解决这个问题,这就是原因。我真的希望我能帮到别人。
wfveoks04#
我不得不将glfw添加到目标链接库。
TARGET_LINK_LIBRARY(可执行名称glfw)