Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Installare e compilare wxWidget ed usarlo con Eclipse
Forum - C/C++ - Installare e compilare wxWidget ed usarlo con Eclipse

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 18:08
Domenica, 02/10/2016
Ciao a tutti.
Premetto che per molti questo quesito è banale, ma per me non lo è affatto. Mi sono trovato a scontrarmi con dei concetti base della programmazione che mi sono reso conto di non avere.

Sto cercando di sviluppare delle applicazioni in C++ e vorrei usare wxWidget per la GUI (possibilmente cross-platform). Come IDE vorrei utilizzare Eclipse (Neon).
Ho scaricato wxWidget e scompattato la zip. E qui arriva il problema: Non so come compilare i file per ottenere le effettive librerie da utilizzare poi nel programma principale (per ora mi accontento anche di una semplice finestra HelloWorld!)

Ho cercato parecchie guide su Internet, ma purtroppo questi passi base li danno per scontati. Forse sono io che non riesco a trovare una guida base per la compilazione.
Vi chiedo gentilmente se potete indirizzarmi verso una spiegazione dettagliata su come effettuare questa compilazione.

Vi ringrazio anticipatamente e chiedo perdono per l'effettiva banalità della mia domanda.

Ultima modifica effettuata da a_butta il 02/10/2016 alle 18:10
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 18:10
Domenica, 02/10/2016
Guarda se dentro la cartella trovi un file README o INSTALL, di solito lì ci sono le istruzioni per la compilazione.

PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 18:16
Domenica, 02/10/2016
Testo quotato

Postato originariamente da lumo:

Guarda se dentro la cartella trovi un file README o INSTALL, di solito lì ci sono le istruzioni per la compilazione.



C'è un file install-sh, di sequito linkato:
http://pastebin.com/9NKLc7bV

Tuttavia non mi sembra affatto fornire delle spiegazioni..

PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 19:14
Domenica, 02/10/2016
No no, quello è lo script di installazione per sistemi UNIX.
Comunque è importante che ci dici che compilatore usi insieme a Eclipse, MinGW o Microsoft VSC?

PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 19:22
Domenica, 02/10/2016
Ho trovato il file in cui spiega come compilare!
http://pastebin.com/7kRyxJdx

Lo seguo dalla linea 117 in poi, uso per la compilazione GCC tramite cygwin. Ho provato a compilare attraverso MSYS2 ma ricevo errore, non effettua la configurazione.

seguendo le istruzioni arrivo alla linea 173 del file, ove bisogna effettuare il make

Ottengo  i seguenti errori:

Codice sorgente - presumibilmente VB.NET

  1. ../src/msw/volume.cpp: In static member functionstatic wxArrayString wxFSVolumeBase::GetVolumes(int, int)’:
  2. ../src/msw/volume.cpp:398:49: error: no matching function for call to ‘_InterlockedExchange(long int*, int)
  3.      ::InterlockedExchange(&s_cancelSearch, FALSE);     // reset
  4.                                                  ^
  5. In file included from /usr/include/w32api/windows.h:70:0,
  6.                  from ../include/wx/msw/wrapwin.h:65,
  7.                  from ../src/msw/volume.cpp:45:
  8. /usr/include/w32api/winbase.h:2973:29: note: candidate: long unsigned int _InterlockedExchange(volatile long unsigned int*, long unsigned int) <near match>
  9.    FORCEINLINE unsigned long InterlockedExchange (unsigned long volatile *Target, unsigned long Value) {
  10.                              ^
  11. /usr/include/w32api/winbase.h:2973:29: note:   conversion of argument 1 would be ill-formed:
  12. ../src/msw/volume.cpp:398:49: error: invalid conversion from ‘long int*to ‘volatile long unsigned int*[-fpermissive]
  13.      ::InterlockedExchange(&s_cancelSearch, FALSE);     // reset
  14.                                                  ^
  15. In file included from /usr/include/w32api/windows.h:70:0,
  16.                  from ../include/wx/msw/wrapwin.h:65,
  17.                  from ../src/msw/volume.cpp:45:
  18. /usr/include/w32api/winbase.h:2982:32: note: candidate: long long unsigned int _InterlockedExchange(volatile long long unsigned int*, long long unsigned int) <near match>
  19.    FORCEINLINE unsigned __int64 InterlockedExchange (unsigned __int64 volatile *Target, unsigned __int64 Value) {
  20.                                 ^
  21. /usr/include/w32api/winbase.h:2982:32: note:   conversion of argument 1 would be ill-formed:
  22. ../src/msw/volume.cpp:398:49: error: invalid conversion from ‘long int*to ‘volatile long long unsigned int*[-fpermissive]
  23.      ::InterlockedExchange(&s_cancelSearch, FALSE);     // reset
  24.                                                  ^
  25. ../src/msw/volume.cpp: In static member functionstatic void wxFSVolumeBase::CancelSearch()’:
  26. ../src/msw/volume.cpp:469:48: error: no matching function for call to ‘_InterlockedExchange(long int*, int)
  27.      ::InterlockedExchange(&s_cancelSearch, TRUE);
  28.                                                 ^
  29. In file included from /usr/include/w32api/windows.h:70:0,
  30.                  from ../include/wx/msw/wrapwin.h:65,
  31.                  from ../src/msw/volume.cpp:45:
  32. /usr/include/w32api/winbase.h:2973:29: note: candidate: long unsigned int _InterlockedExchange(volatile long unsigned int*, long unsigned int) <near match>
  33.    FORCEINLINE unsigned long InterlockedExchange (unsigned long volatile *Target, unsigned long Value) {
  34.                              ^
  35. /usr/include/w32api/winbase.h:2973:29: note:   conversion of argument 1 would be ill-formed:
  36. ../src/msw/volume.cpp:469:48: error: invalid conversion from ‘long int*to ‘volatile long unsigned int*[-fpermissive]
  37.      ::InterlockedExchange(&s_cancelSearch, TRUE);
  38.                                                 ^
  39. In file included from /usr/include/w32api/windows.h:70:0,
  40.                  from ../include/wx/msw/wrapwin.h:65,
  41.                  from ../src/msw/volume.cpp:45:
  42. /usr/include/w32api/winbase.h:2982:32: note: candidate: long long unsigned int _InterlockedExchange(volatile long long unsigned int*, long long unsigned int) <near match>
  43.    FORCEINLINE unsigned __int64 InterlockedExchange (unsigned __int64 volatile *Target, unsigned __int64 Value) {
  44.                                 ^
  45. /usr/include/w32api/winbase.h:2982:32: note:   conversion of argument 1 would be ill-formed:
  46. ../src/msw/volume.cpp:469:48: error: invalid conversion from ‘long int*to ‘volatile long long unsigned int*[-fpermissive]
  47.      ::InterlockedExchange(&s_cancelSearch, TRUE);
  48.                                                 ^
  49. make: *** [Makefile:29072: basedll_volume.o] Error 1



Non ho idea di come risolvere :d



PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 19:35
Domenica, 02/10/2016
Potresti usare la libreria precompilata che trovi al link messo all'inizio del file. Se il linking è dinamico dovresti trovare un .dll da qualche parte, quello insieme agli header file dovrebbero permetterti di usare wxWidgets.

PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 19:56
Domenica, 02/10/2016
Ok provo a seguire il tuo consiglio.
Tra le build presenti ho scaricato wxMSW-3.0.2_gcc471TDM_x64_ReleaseDLL.7z, che mi sembra la più adatta al compilatore che uso.
Le dll che trovo nel file sono quelle riportate nell'immagine sotto.

Scusami se ti infastidisco oltre. Gli header li prendo da dove esattamente? Dal package NON COMPILATO dentro la cartella wxWidget\include\wx trovo una serie di header tra cui wx.h, è corretto?
Come associo gli header alle dinamiche?

Grazie mille e scusa per la scarsa conoscenza in merito



PS: googlando ho trovato che l'errore restituito sembra derivare da un problema di Cygwin 64bit nell'uso della funzione InterlockedExchange. Non è che ci abbia capito granchè. Adesso sto cercando anche di ricompilare il tutto con Cygwin 32bit e vediamo. Ma non ci spero granché



a_butta ha allegato un file: temp.PNG (11030 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 20:02
Domenica, 02/10/2016
Gli header li puoi prendere un po' da dove voi ma ti conviene vedere se ce ne sono dentro Release, potrebbe essere che nel codice grezzo ci siano alcuni header non configurati (se hai presente quando si dà ./configure, alcuni header vengono riscritti perché contengono delle macro all'interno).

Per impostare l'utilizzo della libreria devi vedere come si fa su Eclipse, io non lo conosco quindi non saprei. Devi aggiungere la cartella con gli headers alle 'include directories' e la dll alle libraries.

EDIT: vedendo l'immagine, probabilmente ti conviene aggiungerle tutte (probabilmente però non è proprio necessario, dipende da cosa usi).

Ultima modifica effettuata da lumo il 02/10/2016 alle 20:03
PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 17:41
Martedì, 11/10/2016
E' proprio per questo genere di cose che se appena posso evito di usare librerie altrui -- a meno che si debba mettere insieme un software molto complesso son più i grattacapi che i vantaggi. Ognuno ha le sue manie... :D


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo