簡體   English   中英

編譯多個C ++ OpenGL

[英]Compiling Multiple C++ OpenGL

我正在編寫一個簡單的C ++,opengl程序,並且很難從目標文件中生成可執行文件。 我可以使用以下命令創建每個.cpp的目標文件而不會出現錯誤:

g++ -c filename.cpp  ---->   filename.o

每個.cpp都會創建一個對象,這使我假設它發現opengl標頭很好,但是當我嘗試從這些對象創建可執行文件時,它會輸出:

g++ -o OUTPUT Main.o Time.o Map.o Vehicle.o

Main.o: In function `init()':
Main.cpp:(.text+0x12a): undefined reference to `glEnable'
Main.cpp:(.text+0x134): undefined reference to `glShadeModel'
Main.cpp:(.text+0x14d): undefined reference to `glViewport'
Main.cpp:(.text+0x157): undefined reference to `glMatrixMode'
Main.cpp:(.text+0x15c): undefined reference to `glLoadIdentity'

我意識到g ++告訴我在任何地方都找不到OpenGL函數,這意味着它沒有鏈接到glu.h,gl.h等。但是為什么創建目標文件時不會出現類似錯誤,但是我可以不執行我的可執行文件? 目標文件不會遭受與.exe相同的鏈接錯誤嗎? 我已經嘗試了-I和g ++ -o RUN Time.o Main.o Map.o Vehicle.o -L / usr / include / GL / -lGL -lGLU,並且還驗證了OpenGL目錄的路徑。

每個文件的標題如下:

libgl.h:

#ifndef LIBGL_H
#define LIBGL_H

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
#include "Time.h"
#include "Link.h"

#endif

Time.h:

#ifndef TIME_H
#define TIME_H

extern float GLOBAL_TIME;

#endif

地圖

#ifndef MAP_H
#define MAP_H
#include "libgl.h"
....
#endif

Vehicle.h:

#ifndef VEHICLE_H
#define VEHICLE_H
#include "libgl.h"
...
#endif

Main.cpp:

#include "libgl.h"
#include "Map.h"
#include "Vehicle.h"
 ...

關於標頭/鏈接和編譯,我缺少某些東西,如果有人有任何建議,我將非常有義務。

您需要與OpenGL庫鏈接:可能將-lgl傳遞給最后的g ++調用。

如果您的系統具有pkg-config ,則可以使用pkg-config --cflags --libs gl獲得所有正確的標志。

對於將來的引用,“未定義的引用”是鏈接器錯誤,它始終意味着同一件事:您錯過了目標文件或庫。 它僅在鏈接時顯示,而在簡單編譯時(即使用-c )則不會顯示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM