当前位置: 首页 > 知识库问答 >
问题:

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

郗欣嘉
2023-03-14

我只是想让OpenGL在我的机器(Windows 7 64位)上使用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预编译库)
  • 包含文件夹包含一个名为GLFW的文件夹,其中包含glfw3. h和glfw3native. h(来自下载的GLFW-包含文件夹)

我尝试过:

  • 使用GLFW的64位版本
  • 使用IDE(Eclipse, VS)
  • GLFW未定义引用中的建议
  • 什么是未定义的引用/未解决的外部符号错误以及如何修复它?(交换链接参数顺序)
  • 带有Eclipse CDT MinGW GLEW GLFW的OpenGL中的建议:未定义的引用
  • 尝试使用CMake自己编译库,但看不到在此过程中创建的任何. a、. lib或. dll文件。

共有3个答案

吉栋
2023-03-14

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

要检查MinGW的版本,请在命令行中使用< code>gcc - version命令。

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

祁正浩
2023-03-14
g++ Test.cpp -lglfw -lGL -lm -lX11 -lpthread -lXi -lXrandr -ldl

应该有效

路扬
2023-03-14

几个小时后,我终于解决了我的问题。

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

另外,添加

#define GLFW_DLL

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

 类似资料:
  • 我正在尝试使用AassetManager从android apk访问资产。然而,尽管我已经包含了asset_manager.h和asset_manager_jni.h,但我仍然得到了“对aassetmanager_fromjava的未定义引用”。其他来自asset_manager.h的函数,如AAssetManager_openDir(mgr,"“)等也不能被引用。 以下是完整的代码 这段代码在一

  • 错误:未定义对'pthread_cancel'的引用

  • 问题内容: 我正在使用Linux,并且具有以下文件: 该函数在中声明和定义。我需要在中使用该函数,因此我将该函数声明为 在。 但是,在编译过程中,我得到了错误 怎么了? 谢谢。 预计到达时间:多亏了我收到的答案,我现在有了以下内容: 在fileA.h中,我有 在fileA.c中,我有 在fileB.h中,我有 在fileB.cpp中,我有 但是,我现在有错误 问题答案: 如果您确实是使用C而不是C

  • 问题内容: 我正在尝试使用mingw的gcc与我的MSVC构建的python26_d一起运行Rabbyt库的调试版本。我有很多未定义的引用,这导致我创建了libpython26_d.a,但是仍然存在一个未定义的引用。谷歌搜索给我: http://www.techlists.org/archives/programming/pythonlist/2003-03/msg01035.shtml 但是-r

  • 如有任何线索将不胜感激。 换了cmakelists后我又遇到了一个问题

  • 问题内容: 我正在尝试在操作系统上设置libusb API。我在libusb.org上下载了libusb api。我遵循了标准的安装过程: 然后,我启动了Eclipse C / C ++,并从Internet上的教程中复制了一些代码。但是当尝试构建它时,我得到以下输出: 我在/ lib中有libusb.so,在/ usr / local / include中也有usb.h,在/ usr / loc