gianto1 (Normal User)
Newbie
Messaggi: 7
Iscritto: 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. Help me
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
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?
|
|
gianto1 (Normal User)
Newbie
Messaggi: 7
Iscritto: 07/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.
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
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.
|
|
gianto1 (Normal User)
Newbie
Messaggi: 7
Iscritto: 07/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.
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
"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.
|
|
gianto1 (Normal User)
Newbie
Messaggi: 7
Iscritto: 07/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
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
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!
|
|
gianto1 (Normal User)
Newbie
Messaggi: 7
Iscritto: 07/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
|
|