我无法将我的 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 着色器?
如何将我的 Flutter App 联系人链接到 android 的原生联系人应用程序?
我无法将我的 pygame 游戏链接到我的 tkinter GUI