DOMANDA Programmare con lib OpenGL

Pubblicità

JDany

Utente Attivo
Messaggi
467
Reazioni
24
Punteggio
46
Salve. Ho appena iniziato ad utilizzare la libreria OpenGL per creare della grafica per i miei programmi C++/C.

Utilizzo GLFW 3 e Glad, il tutto installato su Visual Studio 2017.

Il problema è che alcune funzioni, es glad_glClear() non le trova, o meglio l'errore che mi viene restituito è questo: "simbolo esterno non trovato". E' come se trova il prototipo di funzione ma non la definizione.

Se qualcuno ha avuto il mio stesso problema spero avrete trovato la soluzione, perchè io non riesco proprio a risolvere. Nel progetto ovviamente ho incluso il file Glad.c che viene generato dal sito Glad.
 
Assicurati di aver incluso i file header necessari e di aver linkato le librerie corrette.
Che header includi?
Come compili?
 
Solo per puntualizzare:
- l'header "glad.h" deve essere fatto prima di "glfw3"
- il link di glfw3 deve avvenire prima di opengl32.

Secondo me ti manca -lglu32.
 
Solo per puntualizzare:
- l'header "glad.h" deve essere fatto prima di "glfw3"
- il link di glfw3 deve avvenire prima di opengl32.

Secondo me ti manca -lglu32.


Si includo gli header e i link nel modo in cui hai scritto.

E molto probabilmente si, mi manca lglu32 perché non ho mai sentito questa lib oppure mi è sfuggita della lettura.
 
Perdonami, glu32 non c'entra nulla in questo caso (se non ricordo male è deprecata). Ho detto -lglu, ma volevo in realtà scrivere glad.

Utilizzi VS, ma compili con il compilatore di Microsoft oppure altro (come MinGw)? Assicurati di aver utilizzato le librerie corrette.
Avevo avuto anche io qualche problema in passato, e con MinGw avevo linkato anche gdi (-lgdi32).

Stai utilizzando CMake? In tal caso mostraci anche il CMakeLists che stai usando.
 
Perdonami, glu32 non c'entra nulla in questo caso (se non ricordo male è deprecata). Ho detto -lglu, ma volevo in realtà scrivere glad.

Utilizzi VS, ma compili con il compilatore di Microsoft oppure altro (come MinGw)? Assicurati di aver utilizzato le librerie corrette.
Avevo avuto anche io qualche problema in passato, e con MinGw avevo linkato anche gdi (-lgdi32).

Stai utilizzando CMake? In tal caso mostraci anche il CMakeLists che stai usando.

Io compilo utilizzando MinGW.

Ho utilizzato CMake per creare i file di glfw3, come dice nella guida che ho linkato su.
 
Stasera dovrei aver tempo, e compilo sul mio. Ti dico quale flag ti stai perdendo.

Che versione usi di MinGw?
--- i due messaggi sono stati uniti ---
Dovresti pubblicare il CMakeLists.txt.
Inoltre, stando a quanto dici in un precedente post, ho visto che non linki la libreria corretta: stai utilizzando MinGw, quindi compili con gcc, dovresti linkare -ldl .

Non ho più tutto il progetto, prima di riscaricare tutto attendo tuoi aggiornamenti in merito; se hai ancora difficoltà scarico la nuova versione di GLFW e glad e compilo un codice di esempio.

Qualche ulteriore nota.
Assicurati che il percorso agli header sia corretto; io utilizzo le variabili d'ambiente (la lib è SDL2 in questo caso) con il path alla directory:
Codice:
set(SDL2_INCLUDE_DIRS "$ENV{MINGW_INC}")
target_include_directories(project_name PUBLIC ${SDL2_INCLUDE_DIRS})
 
Ultima modifica:
Stasera dovrei aver tempo, e compilo sul mio. Ti dico quale flag ti stai perdendo.

Che versione usi di MinGw?
--- i due messaggi sono stati uniti ---
Dovresti pubblicare il CMakeLists.txt.
Inoltre, stando a quanto dici in un precedente post, ho visto che non linki la libreria corretta: stai utilizzando MinGw, quindi compili con gcc, dovresti linkare -ldl .

Non ho più tutto il progetto, prima di riscaricare tutto attendo tuoi aggiornamenti in merito; se hai ancora difficoltà scarico la nuova versione di GLFW e glad e compilo un codice di esempio.

Qualche ulteriore nota.
Assicurati che il percorso agli header sia corretto; io utilizzo le variabili d'ambiente (la lib è SDL2 in questo caso) con il path alla directory:
Codice:
set(SDL2_INCLUDE_DIRS "$ENV{MINGW_INC}")
target_include_directories(project_name PUBLIC ${SDL2_INCLUDE_DIRS})

Si funziona tutto.

Comunque mi sento stupido, il motivo per cui non trovava le definizioni di funzioni è perché non riusciva ad aprire correttamente il file " Glad.c".

Scusa di averti fatto perdere tempo e ho cambiato, ho iniziato a compilare con il compilare di Vs, perché ho letto che c'erano dei vantaggi nell'usare questo compilatore con librerie Opengl.

Come librerie Opengl utilizzo GLFW3, sono quelle che vengono aggiornate più spesso, e Glad.
 
Pubblicità
Pubblicità
Indietro
Top