Я не могу связать свою программу opengl с math3d.h - PullRequest
0 голосов
/ 09 января 2010

Я писал программу для OpenGL, и у меня возникает проблема со связью с math3d.h.

Я использую Ubuntu и g ++.

Дело в том, что я не установил пакет для math3d, потому что я получил заголовочный файл и файл cpp из сети с превосходной OpenGL. Поэтому я просто скопировал заголовочный файл и файл .cpp в локальный каталог и сделал

#include "math3d.h"

Но дело в том, что я использовал переключатели для связи других файлов заголовков, таких как gl.h, glu.h, glut.h, давая.

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

Но я не знаю, что дать для math3d. Я получаю сообщение об ошибке с неопределенной ссылкой на функции. Эту ошибку я получал, когда не давал -lGL и т. Д. Для функций в этих библиотеках.

Я полностью застрял здесь, и я не знаю, что делать, и без этого я не могу идти вперед.

Ответы [ 3 ]

1 голос
/ 09 января 2010

Вы не связываете заголовочные файлы. Вы включаете их, а затем связываете вместе объектные файлы, созданные файлами * .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 $@

Ну, знаешь, этот может даже сработать:>

0 голосов
/ 09 января 2010

Необходимо также скомпилировать math3d.cpp: g++ test.cpp math3d.cpp -lGL -lGLU -lglut

0 голосов
/ 09 января 2010

Есть несколько проблем с вашим вопросом:

  • Вы не ссылаетесь на файлы заголовков - вы включаете файлы заголовков, вы связываете объектные файлы или библиотеки
  • Помимо включения соответствующих заголовочных файлов, которые необходимо связать в библиотеке - вы сказали, что скопировали файл .cpp из «локального каталога», означает ли это, что вы добавили один из файлов .cpp из проекта OpenGL в свой проект? Это может сработать, если вы убедитесь, что получили все необходимые файлы .cpp (используемые вами функции, которые объявлены в 'math3d.h', могут быть реализованы в ряде файлов .cpp). Тем не менее, гораздо лучше создать openGL как библиотеку и ссылаться на нее. Вы можете обратиться к документации OpenGL, чтобы узнать, как ее построить.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...