【问题标题】:I can't link my opengl program to math3d.h我无法将我的 opengl 程序链接到 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,你能粘贴你的编译器抱怨的内容吗?

标签: c++ opengl


【解决方案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 文件与您的项目一起编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2020-04-10
    • 1970-01-01
    • 2018-03-18
    • 2014-09-08
    • 2013-02-17
    相关资源
    最近更新 更多