Когда я делаю эти файлы, g ++ возникает две ошибки, которые являются множественным определением и предыдущим определением.C++ множественное определение в Linux
Makefile:
INCLUDE = -I/usr/X11R6/include/
LIBDIR = -L/usr/X11R6/lib
FLAGS = -Wall
CC = g++
CFLAGS = $(FLAGS) $(INCLUDE)
LIBS = -lglut -lGL -lGLU
glTestDemo.o: glTestDemo.cpp headers.h
$(CC) $(CFLAGS) -c glTestDemo.cpp
display.o: display.cpp headers.h
$(CC) $(CLFAGS) -c display.cpp
glTestDemo: glTestDemo.o display.o
$(CC) $(CFLAGS) glTestDemo.o display.o -o [email protected] $(LIBDIR) $< $(LIBS) # The initial white space is a tab
all: glTestDemo
clean:
rm glTestDemo *.o
headers.h
#ifndef __HEADERS_H__
#define __HEADERS_H__
#include <GL/glut.h>
extern int NumPoints;
extern void incorrect_display (void);
#endif
display.cpp
#include "headers.h"
void
incorrect_display (void)
{
glClear (GL_COLOR_BUFFER_BIT);
glPointSize (1.0);
glDrawArrays (GL_POINTS, 0, NumPoints);
glFlush();
}
glTestDemo.cpp
#include "headers.h"
int NumPoints = 5000;
int
main (int argc, char** argv)
{
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_RGBA);
glutInitWindowPosition (50, 50);
glutInitWindowSize (600, 600);
glutCreateWindow ("Test title");
glutDisplayFunc (incorrect_display);
glutMainLoop();
return 0;
}
сообщение об ошибке, как, что после того, как я печатаю сделать все:
/usr/bin/ld: error: glTestDemo.o: multiple definition of 'NumPoints'
/usr/bin/ld: glTestDemo.o: previous definition here
/usr/bin/ld: error: glTestDemo.o: multiple definition of 'main'
/usr/bin/ld: glTestDemo.o: previous definition here
collect2: error: ld returned 1 exit status
make: *** [glTestDemo] Error 1
У меня есть сделать скрипт, чтобы проверить мой C++ синтаксис и г ++ флаг и флаг OPENGL, который используется путем соединения. Это успех. Следовательно, я думаю, что Makefile вызывает ошибку. Но я не могу найти проблему для этого.