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

标签 c++ opengl

我正在编写一个 OpenGL 程序,碰巧我在与 math3d.h 的链接时遇到了问题。

我正在使用 Ubuntu 和 g++。

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

#include "math3d.h"

但问题是,我曾经使用开关通过给定链接其他头文件,如 gl.h、glu.h、glut.h。

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

但我不知道为 math3d 提供什么。我收到一条错误消息,指出对函数的 undefined reference 。当我不为那些相应库中的函数提供 -lGL 等时,我曾经遇到过这个错误。

我完全被困在这里,我不知道该怎么办,否则我无法前进。

最佳答案

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

简答

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

... 并且有效。

长答案

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

示例生成文件:

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 $@

好吧,你知道,这个甚至可能有用:>

关于c++ - 我无法将我的 opengl 程序链接到 math3d.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2033800/

相关文章:

c++ - 如何仅用宏生成整数序列?

C++:声明、定义和调用返回模板类对象的函数?

objective-c - OpenGL glBlendFuncSeparate

opengl - 使用 GLSL 渲染矩形纹理

c++ - 在 OpenGL 中启用深度测试后,我的整个屏幕都是空白的(恢复为清晰的颜色)——为什么?

c++ - 我的窗口在 OpenGL 中正在调整大小

C++ 从文件读取到 vector

c++ - MFC/Sql 相同情况下的不同异常

c++ - 是否可以将 char 数组的元素转换为 const char?

c++ - 我对 glBindTexture 的使用有什么问题?