繁体   English   中英

OpenGL GLFW:未定义对“glfwInit”的引用

[英]OpenGL GLFW: undefined reference to 'glfwInit'

我只是想让 OpenGL 使用 GLFW 在我的机器(Windows 7 64 位)上工作。

我收到奇异的 linker 错误:

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 - 包含文件夹)

我努力了:

最后几个小时后想通了,我的问题。

将 libglfw3.a 文件保留在与 glfw3.dll 相同的目录中(如果尝试动态链接)会混淆链接器。 如果动态链接,请删除它 - 您只需要 dll 和 /include 文件夹。

另外,添加

#define GLFW_DLL

如果与 DLL 链接,则在 include 语句上方。

g++ Test.cpp -lglfw -lGL -lm -lX11 -lpthread -lXi -lXrandr -ldl

应该管用

如果您将所有库与 GCC 正确链接并且没有出现错误,但它只是没有定义像“glfwInit()”这样的函数,请检查您拥有的 MinGW 版本。 如果您使用 86x 版本的 MinGW,那么库也必须是 86x。 同样可能适用于 64x,但我还没有检查。

我一整天都在努力解决这个问题,这就是原因。 真的希望我能帮助别人。

我意识到这个问题在StackOverflow和其他站点上已经被问过很多次了。 在查看了这些资源后,我仍然茫然。

我只是想让GLFW在我的机器(Windows 7 64位)上使用OpenGL。

我遇到的问题与其他许多问题一样:我遇到了单个链接器错误:“未定义对'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文件。

请让我知道其他信息是否有帮助。

我不得不将 glfw 添加到目标链接库

target_link_libraries( 可执行文件名 glfw )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM