2012-10-22 17 views
7

Non riesco a ottenere SOIL correttamente funzionante con Visual Studio 2010 - Sono lontano da un esperto di VS ma per quanto ne so sono necessari solo i seguenti passaggi per far funzionare l'ambiente:Impostazione SOIL in Visual Studio 2010

Proprietà >> C/C++> Generale >> includono directory Aggiungere nel percorso per SOIL.h

Proprietà >> Linker >> Generale >> Ulteriori directory di libreria Aggiungere nel percorso per libSOIL.a

Sto anche utilizzando GLUT gratuito e i percorsi dei file di glut sono impostati qui a s bene - Ho anche impostato il percorso Dubugging >> del file bin GLUT. ridenominazione simbolo esterno non risolto _SOIL_load_OGL_texture riferimento in funzione "vuoto __cdecl init (void)" (init @@ YAXXZ?)

provato:

Quando uso il SOIL_load_OGL_texture ottengo il seguente errore:

errore LNK2019 libSOIL.a in libSOIL.lib e SOIL.lib ma non ha funzionato. Ho quindi costruito il progetto VC8 e ho usato quello .lib come suggerito qui SOIL not linking correctly ma non ha funzionato neanche.

Sto usando il codice di esempio dalla loro homepage

GLuint tex_2d; 
tex_2d = SOIL_load_OGL_texture 
    (
     " C:\\Sunset.png", 
     SOIL_LOAD_AUTO, 
     SOIL_CREATE_NEW_ID, 
     SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT 
    ); 

/* check for an error during the load process */ 
if(0 == tex_2d) 
{ 
    printf("SOIL loading error: '%s'\n", SOIL_last_result()); 
} 

risposta

5

sembra che tu non hai effettivamente messo SOIL.lib nella lista Properties -> Linker -> Input -> Additional Dependencies.

L'intestazione FreeGLUT ha qualche Win32-specific #pragmas per inserire i file .lib corretti, motivo per cui è sufficiente impostare l'Additional Library Directories per quello. SOIL non ne ha, quindi devi dire esplicitamente al linker che .lib usare.

+0

Grazie - funziona perfettamente. So che sta facendo un'altra domanda, ma sapresti di qualche buon posto per conoscere i linker e l'intera area (è difficile trovare un buon posto in rete che parta dalle basi) –

+0

Non in particolare. Come nella maggior parte delle cose comincerei da [Wikipedia: Linker (informatica)] (http://en.wikipedia.org/wiki/Linker_%28computing%29) e andrò dove la tua curiosità ti porta :) – genpfault

+0

Farò grazie per l'aiuto! –

7

Potrebbe essere il thread vecchio, ancora condividerò qualcosa.

  1. Scaricare il file zip da http://www.lonesock.net/soil.html e decomprimerlo.

  2. Nel tuo progetto di studio visivo include percorso (progetto -> proprietà -> directory vC++ -> include directory) aggiungi il percorso alla cartella "src" di Soil. Lo stesso posto di -> directory della libreria aggiungono la cartella "lib". Progetto -> Proprietà -> Linker -> Input -> Dipendenze aggiuntive -> Modifica per aggiungere "SOIL.lib"

  3. Questo passaggio è importante in quanto le persone tendono a rinominare il file .a in .lib. Non farlo. Invece vai nella cartella "projects", seleziona un VC * (es. VC8 per VS2012) -> apri il file di studio visivo -> si aprirà usando il tuo studio visivo -> fai clic su ok -> fai clic su ok. La tua soluzione sarà pronta.

Ora premere F5/Esegui per costruire ed eseguire. Fai attenzione mentre lo fai, nel caso in cui il progetto stia usando una versione debug x64, quindi qui seleziona lo stesso prima di costruire la soluzione.

  1. Ci saranno cartelle/file creati nella cartella VC *. Vai in Debug/x64 (dipende dal tuo progetto), copia il file SOIL.lib nella cartella "lib" originale (hai indicato in Proprietà di Visual Studio nel passaggio 2).

A questo punto, hai finito. Dovrebbe funzionare.

+1

Mi piace molto questa API: P. Grazie per l'aiuto. –

+0

Se lo si utilizza solo per disegnare la trama da un'immagine, è anche possibile utilizzare OpenCV per leggere l'immagine e disegnarla. In questo caso è necessario conoscere il tipo esatto di dati dell'immagine. – SanD