PDA

View Full Version : [C++] wxwin e codeblock. L' exe finale non trova una libreria


palomo2
05-11-2008, 13:02
Salve,
ho da poco iniziato a programmare con le wxwidget e ho deciso di portare su windows la mia prima applicazione. Ho scaricato codeblocks e le wxwidget (versione installer). Queste ultime le ho compilate con i seguenti comandi:

mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release

come documentato in questo wiki:
http://wiki.codeblocks.org/index.php?title=WxWindowsQuickRef

Il problema è che, pur riuscendo a compilare ed avviare il mio eseguibile da codeblocks, quando vado nella cartella del progetto e clicco sul file per avviarlo mi dice:

impossibile avviare l'applicazione specificata. wxmsw28u_gcc_custom.dll non è stato trovato. Una nuova installazione dell'applicazione potrebbe risolvere il problema

Ovviamente ho provato anche a creare progetti con il wizard e poi ad avviarli ma mi mi da sempre lo stesso problema...

Ho anche provato ad usare librerie wxwidgets già precompilate ma il problema è lo stesso :(

Questo file è presente nella cartella "C:\Programmi\wxWidgets-2.8.9\lib\gcc_dll\". Non riesco proprio a capire qual'è il problema, mi aiutereste voi?

Grazie mille

Volutomitra
05-11-2008, 16:46
Hai compilato le librerie senza leggere...


SHARED

SHARED controls whether a DLL (SHARED=1) or static (SHARED=0) version of wxWidgets is built. With a DLL build, compile times are faster and the executable size is smaller. The total size of a single executable plus the wxWidgets DLL is greater, but multiple executables can use the same DLL.

* A DLL build of wxWidgets creates import libraries (such as libwxmsw28.a) and DLLs (such as wxmsw28_gcc_custom.dll). You must include the DLL when you distribute your program.
* A static build of wxWidgets creates static libraries only (such as libwxmsw28.a), and you do not need to distribute a wxWidgets DLL.


Devi copiare la DLL nella cartella dove hai l'eseguibile

palomo2
05-11-2008, 19:11
Ci avevo già provato ma senza risultato. Ora ho copiato anche la dll mingwm10.dll nella cartella dell'exe e funziana... finalmente. Però ora tutta la cartella occupa circa 10mb per un programmino di niente...
magari cercherò di utilizzare le librerie non shared e vediamo cosa ne viene fuori. Intanto ho provato a compilare con devcpp e mi restituisce un exe di 3.5mb che è più accettabile...

palomo2
06-11-2008, 02:09
Grazie alla tua indicazione ho trovato una soluzione! Mi è bastato compilare le wxwidgets con l'opzione SHARED=0 e creare un nuovo progetto in codeblocks spuntando la sola opzione "wxWidgets is built as monilithic library" nelle opzioni di configurazione.
Il risultato è un exe di 2.5mb distribuibile singolarmente...

Grazie mille