Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Errore SDL_Getenv Code blocks 13.12
Forum - C/C++ - Errore SDL_Getenv Code blocks 13.12

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
gianto1 (Normal User)
Newbie


Messaggi: 7
Iscritto: 07/08/2015

Segnala al moderatore
Postato alle 2:25
Venerdì, 07/08/2015
Ciao a tutti,
sono nuovo nel forum e spero che vogliate aiutarmi.
Ho realizzato un progetto su una macchina windowsXP 32 bit, ho riportato il tutto su Windows10 64bit e dopo aver cambiato tutte le impostazioni eseguendo la compilazione l'errore è il seguente:

"Impossibile trovare il punto di ingresso SDL_getenv della procedura nella libreria di collegamente dinamico C:\User\NomeUtente\Desktop\cartellaOBJ\bin\Debug\progetto.exe"

Ho provato successivamente ad eseguirlo su una macchina Windows 7 32Bit e il risultato è il seguente:

"Impossibile trovare il punto di ingresso SDL_getenv della procedura nella libreria di collegamente dinamico SDL.dll"


Il compilatore (code Blocks) è stato configurato così :

Other Linker Options :-lmingw32 -lSDLmain -lSDL
Compiler: C:\SDL-1.2.14\include\SDL
Linker:C:\SDL-1.2.14\lib

Ovviamente nella cartella del mio progetto è presente SDL.dll .

Vi chiedo cortesemente aiuto, non ho la più pallida idea di come risolvere il problema ed ho assolutamente bisogno di eseguire il progetto su almeno una di queste macchine.8-|8-| Help me:d:d

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 12:18
Venerdì, 07/08/2015
1° cosa: codeblocks NON è un compilatore.
2° cosa: se ricompili il programma su windows 10, il programma appena compilato parte?
3° cosa: se compili con MSVC magari una versione vecchia come la 2003, il risultato funziona su tutte le macchine?
4° cosa: e se non linki SDLmain?

PM Quote
Avatar
gianto1 (Normal User)
Newbie


Messaggi: 7
Iscritto: 07/08/2015

Segnala al moderatore
Postato alle 7:22
Sabato, 08/08/2015
Ciao TheDarkJuster, grazie per la risposta, scusa se scrivo ora ma ho avuto impegni lavorativi.
allora:
1° cosa: Perdona l'errore
2° cosa:la compilazione va a buon fine, è l'esecuzione il problema ,dopo l'errore il programma termina così:
"Process terminated with status -1073741510 (0 minute(s), 4 second(s))"
3° cosa: sto installando il 10, configuro SDL e ti dico.
4° cosa: se non linko SDLmain non parte nulla.

Provo con MSVC, ma più o meno non sai a cosa possa far riferimento questo errore?
Ti giuro sto uscendo matto.

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 11:20
Sabato, 08/08/2015
Si, semplicemente non trova nella dll il metodo SDL_getenv, questo per la precisione:
http://www.libsdl.org/release/SDL-1.2.15/src/stdlib/SDL_ge ...

Comunque non ti preoccupare, in un modo o nell'altro quel programma funzionerà dappertutto, te lo posso assicurare.

io proverei queste cose:
-ricompilo SDL e SDLmain con librerie statiche, così non ho dll da portarmi in giro
-ricompilo il programma linkando le due librerie statiche appena create
E proverei a compilare con il compilatore c++ incluso con visual studio 2003 (non esiste una versione express), o visual studio 2008 (la express edition è gratis).

L'eseguibile che ottieni dovrebbe funzionare su ogni macchina windows con visual c++ 2008 runtime installata.

PM Quote
Avatar
gianto1 (Normal User)
Newbie


Messaggi: 7
Iscritto: 07/08/2015

Segnala al moderatore
Postato alle 11:33
Sabato, 08/08/2015
Perdona l'ignoranza,

mi hai indicato 2 passaggi :
- ricompilo SDL e SDLmain con librerie statiche, così non ho dll da portarmi in giro
- ricompilo il programma linkando le due librerie statiche appena create
in particolare cosa dovrei fare?

La mia necessità non è avere un .exe da portare ovunque ma che il riesca a compilare e successivamente eseguire il programma direttamente (trattasi di progetto didattico).

Ad ogni modo ti ringrazio per il tempo che mi stai dedicando.




PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 11:43
Sabato, 08/08/2015
"La mia necessità non è avere un .exe da portare ovunque ma che il riesca a compilare e successivamente eseguire il programma direttamente (trattasi di progetto didattico). "

Ah, non lo avevo capito! Quindi in pratica vuoi poter compilare il tuo programma ovunque e poi poterlo eseguire subito dopo, ora ho capito correttamente?

Giusto per curiosità a che versione di SDL stai facendo riferimento?

Comunque se il tuo scopo è quello creerei una soluzione di visual studio con 2 progetti al suo interno:
- SDL
- Il tuo programma

E configurerei il tuo programma affinchè durante la compilazione il compilatore vada a linkare il risultato della compilazione delle SDL

secondo me questa è la strada più "sicura" da intraprendere.

PM Quote
Avatar
gianto1 (Normal User)
Newbie


Messaggi: 7
Iscritto: 07/08/2015

Segnala al moderatore
Postato alle 11:57
Sabato, 08/08/2015
Il mio problema è che devo prendere questo progetto creato inizialmente con Code Blocks W32bit composto da 2 file.h e 3 .cpp tra cui il main.cpp e aprire lo stesso e identico progetto e dunque compilarlo ed eseguirlo nuovamente su una macchina W64Bit .

La versione SDL da me utilizzata è la 1.2.14 (è la stessa che utilizzai tempo addietro quando creai il progetto)
Ciò che ho fatto su code blocks è questo:
Other Linker Options :-lmingw32 -lSDLmain -lSDL
Compiler: C:\SDL-1.2.14\include\SDL
Linker:C:\SDL-1.2.14\lib

Ho copiato poi SDL.dll all'interno della cartella del progetto e anche in system32.

Ho dimenticato qualcosa ? ho sbagliato qualcosa?

Ad ogni modo ho lasciato a casa il pc che installava Studio 2010 , una volta che torno provo a fare un nuovo progetto riportando i 5 file sopracitati all'interno nella speranza che funzioni, ma ne dubito perchè solitamente passo da studio a code blocks e mai il contrario .

Su visual studio sai indicarmi cosa dovrei fare per poter utilizzare SDL ?

Grazie

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 12:24
Sabato, 08/08/2015
Ma quando dici che vuoi compilare su una macchina a 64 bit intendi che compili l'eseguibile a 64 bit o ti accontenti del 32 anche se la macchina supporterebbe di più?
Adesso io direi: una cosa per volta. E' inutile pensare a codeblocks e a vs contemporaneamente.

Se proprio vuoi usare codeblocks ti conviene controllare un paio di cosette:
la versione di g++ installata sulle diverse macchine e l'architettura target di default di g++.

Se vuoi un consiglio: disinstalla gcc e codeblocks, installa su tutte le macchine LA STESSA VERSIONE di mingw (ti consiglio tdm-gcc a 32 bit: http://tdm-gcc.tdragon.net/download ) e reinstalla la versione lite di codeblocks, quella SENZA mingw incluso.
Per ogni macchina metti nella cartella lib di tdm-gcc libSDL.la e libSDLmain.a e libSDL.dll.a e nella cartella include gli header (il pacchetto che contiene tutto è questo: https://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz )

Ora, nella compilazione le librerie da linkare sono:
-lSDLmain -lSDL.dll

A questo punto, a compilazione completata ridistribuisci il tuo progetto insieme ai file SDL.dll e sdl-config (che trovi dentro al pacchetto che ti ho linkato)

Se tu segui il mio consiglio ed esegui i passaggi correttamente tutto ciò che fai è riproducibile e quindi posso seguirti.

Ovviamente la soluzione di codeblocks la devi ricreare da capo, non riciclare quella che porta agli errori!

PM Quote
Avatar
gianto1 (Normal User)
Newbie


Messaggi: 7
Iscritto: 07/08/2015

Segnala al moderatore
Postato alle 12:41
Sabato, 08/08/2015
Io voglio utilizzare lo stesso codice,non voglio ottimizzarlo x la macchina.

Ad ogni modo ora non sono a casa , quando torno faccio quanto da te indicato e ti scrivo.

Ci aggiorniamo dopo le 14 .


Grazie mille :k::k:

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo