DOMANDA Programmare con lib OpenGL

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro
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.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Assicurati di aver incluso i file header necessari e di aver linkato le librerie corrette.
Che header includi?
Come compili?
 

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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.
 

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro
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.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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.
 

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro
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.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Hai linkato gdi?
 

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro
Comunque non riesco a risolvere..

L'errore è sempre lo stesso.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Stasera dovrei aver tempo, e compilo sul mio. Ti dico quale flag ti stai perdendo.

Che versione usi di MinGw?
Post unito automaticamente:

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:

JDany

Utente Attivo
461
24
CPU
Ryzen 9 3900x
Scheda Madre
ASUS H170-Pro
RAM
Corsair Vengeance LPX 2x8 GB
GPU
ZOTAC RTX 3070 TWIN EDGE OC
Monitor
Philips Gaming Monitor 24"
PSU
Corsair CX450M
Case
Sharkoon VS4-V
OS
Windows 11 Pro
Stasera dovrei aver tempo, e compilo sul mio. Ti dico quale flag ti stai perdendo.

Che versione usi di MinGw?
Post unito automaticamente:

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.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili