我正在编写一个 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/