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

时间:2010-01-09 15:14:26

标签: c++ opengl

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

我正在使用Ubuntu和g ++。

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

#include "math3d.h"

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

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

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

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

3 个答案:

答案 0 :(得分: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 $@

嗯,你知道,这个甚至可能有效:&gt;

答案 1 :(得分:0)

您的问题存在一些问题:

  • 您没有链接到头文件 - 您包含头文件,链接目标文件或库
  • 除了包含你需要在库中链接的相应头文件外 - 你说你从'本地目录'复制.cpp文件这是否意味着你将一个.cpp文件从OpenGL项目添加到你的项目中?如果确保获得所需的所有.cpp文件,则可以使用(您在“math3d.h”中声明的函数可以在多个.cpp文件中实现)。但是,将openGL构建为库并将其链接起来更好。您可能需要参考OpenGL文档以了解如何构建它。

答案 2 :(得分:0)

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