2011-01-20 18 views
5

Ho scritto un'app che analizza una soluzione di Visual Studio 2010 e tenta di compilarla utilizzando GCC.Esecuzione di GCC tramite Visual Studio

Come ho creato l'app, l'ho avuto in esecuzione in una finestra della console standard e non ho avuto problemi (a patto di ignorare le mie leggere incompatibilità con GCC;)).

il problema nasce che quando eseguo la domanda in base Visual Studio spara fino bene, ma quando si genera il bambino GCC processi segnala:

cc1plus.exe: errore durante il caricamento delle librerie condivise:?: Non può aprire il file oggetto condiviso: Nessun file o directory

Questo è molto confuso poiché funziona come un'app console autonoma. Quindi qualcuno ha idea di cosa sta succedendo? Cos'è questo "?" biblioteca? Perché funziona sotto la console ma non tramite VStudio?

Scarico il mio PATH env var dall'interno dell'app build e include sicuramente la mia directory cygwin/bin. Si perde subito dopo questo? Se eseguo la shell bash cygwin,/usr/bin si trova nel percorso.

Quindi cosa dà? Qualcuno ha qualche idea?

+0

I miei due centesimi: se hai bisogno solo di GCC (e non POSIXness) su Windows, vai per MinGW, per esempio da qui: http://mingw-w64.sourceforge.net/ Questo è GCC nativo che gira su Windows (senza, o se vuoi con Cygwin). Potresti avere una configurazione più semplice senza il layer Cygwin, se ovviamente non è una parte necessaria della tua app. – rubenvb

+0

@rubenvb: Purtroppo deve essere cygwin :( – Goz

+0

poi Rozuur ha la risposta su quale sia il problema. Come risolverlo è un'altra questione, purtroppo.Avrai bisogno di assicurarti che gli strumenti cygwin vengano richiamati dall'ambiente Cygwin Come penso che chiamarli da Cywgin (ba) sh.exe funzionerebbe, ma potrebbero esserci altri/modi migliori: – rubenvb

risposta

5

Non ho provato questo problema con Visual Studio e non sono sicuro che questo risolva il problema, ma ho affrontato un problema simile quando provavo a compilare un programma con gcc di cygwin in windows con emacs. Siince cyccin gcc.exe non è un eseguibile, ma un tipo di collegamento simbolico all'eseguibile reale (che è gcc-3.exe o gcc-4.exe a seconda di ciò che è stato installato). Nella shell BASH questi collegamenti simbolici sono facilmente risolvibili, in cmd.exe non lo sono.

+0

Questo ha una grande possibilità di essere effettivamente un problema! – rubenvb

+0

Questo è un problema generale con cygwin quando viene eseguito da cmd.ex e. – Rozuur

+0

@Rozuur: Saluti questo sembra essere il problema. Che dolore. Ho intenzione di eseguire qualche altro test per essere sicuro, ma ho il sospetto che tu riceverai altri 315 punti da me :) – Goz

3

Eseguire SysInternals ProcMon e vedere quali file non vengono caricati?

+0

Altrimenti anche sysinternals depends.exe può essere di grande utilità – Benoit

+0

Vero, ma se si sta giocando con percorsi e qualunque sia spesso difficile ottenere Depends per mostrare cosa è sbagliato e perché considerando ProcMon ti mostrerà i percorsi esatti che vengono provati e quali file non riescono a caricare ... –

+2

Punto di informazione: depends.exe non è un Sysinternals strumento –

Problemi correlati