我无法将我的 opengl 程序链接到 math3d.h

Posted

技术标签:

【中文标题】我无法将我的 opengl 程序链接到 math3d.h【英文标题】:I can't link my opengl program to math3d.h 【发布时间】:2010-01-09 15:14:26 【问题描述】:

我正在编写一个 OpenGL 程序,但碰巧我与 math3d.h 的链接有问题。

我正在使用 Ubuntu 和 g++。

问题是我没有安装 math3d 的软件包,因为我从网上获得了带有 OpenGL 超级棒的头文件和 cpp 文件。所以我只是将头文件和.cpp文件复制到本地目录并做了

#include "math3d.h"

但问题是我过去常常使用开关来链接其他头文件,如 gl.h、glu.h、glut.h。

g++ test.cpp -lGL -lGLU -lglut.  

但我不知道该为 math3d 提供什么。我收到一个错误,说未定义对函数的引用。当我没有为这些相应库中的函数提供 -lGL 等时,我曾经遇到过这个错误。

我完全被困在这里,我不知道该怎么办,没有这个我就无法前进。

【问题讨论】:

你能用一些标点符号吗?无意冒犯,但这样读起来真的很难。 已修复;>。 OP,你能粘贴你的编译器抱怨的内容吗? 【参考方案1】:

您不链接头文件。您包含它们,然后将 *.cpp 文件生成的目标文件链接在一起。

简答

g++ test.cpp math3d.cpp -lGL -lGLU -lglut

...它的工作原理。

长答案

您缺少的是任何类型的构建系统(阅读Makefile)。您需要首先构建 math3d.cpp,然后是您的测试程序。

示例 Makefile:

CC=g++
CFLAGS=-c -Wall
LDFLAGS=-lGL -lGLU -lglut
SOURCES=test.cpp math3d.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=test

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CC) $(CFLAGS) $< -o $@

嗯,你知道,这个甚至可以工作:>

【讨论】:

先生,谢谢您的帮助。让我尝试使用makefile 谢谢:) 额外的好处是您不需要每次都重新输入整个命令行,而只需输入make。更不用说添加更多文件会很容易。【参考方案2】:

还需要编译 math3d.cpp: g++ test.cpp math3d.cpp -lGL -lGLU -lglut

【讨论】:

【参考方案3】:

你的问题有几个问题:

您不链接到头文件 - 您包括头文件,您链接目标文件或库 除了包括您需要在库中链接的适当头文件之外 - 您说您从“本地目录”复制了 .cpp 文件,这是否意味着您将 OpenGL 项目中的一个 .cpp 文件添加到您的项目中?如果您确保获得所需的所有 .cpp 文件(您使用的在 'math3d.h' 中声明的函数可能在多个 .cpp 文件中实现),这将起作用。但是,最好将 openGL 构建为库并与之链接。您可能需要查阅 OpenGL 文档以了解如何构建它。

【讨论】:

那我该怎么办呢,我该如何解决呢?你能解释一下吗? @yuneek,我对 OpenGL 不熟悉——我只是指出了一些关于您提出问题的一般 C++ 问题。听起来您需要链接另一个库或将必要的 .cpp 文件与您的项目一起编译。

以上是关于我无法将我的 opengl 程序链接到 math3d.h的主要内容,如果未能解决你的问题,请参考以下文章

无法将我的 mat4 转换矩阵解析为我的 opengl 着色器?

无法将着色器链接到 OpenGL 中的程序对象,无法调试

如何将我的 Flutter App 联系人链接到 android 的原生联系人应用程序?

我无法将我的 pygame 游戏链接到我的 tkinter GUI

XCode 5.1.1“捕获 OpenGL ES 帧”被禁用

丢失 OpenGL 输出