2011-01-20 10 views
5

He estado escribiendo una aplicación que analiza una solución de Visual Studio 2010 e intenta compilarla usando GCC.Ejecutando GCC a través de Visual Studio

Cuando construí la aplicación, la ejecuté en una ventana de consola estándar y no he tenido problemas (siempre que ignore mis ligeras incompatibilidades de GCC;)).

El problema viene de que cuando yo haga esta solicitud bajo Visual Studio se dispara hasta bien, pero cuando se genera el niño procesa GCC se informa:

cc1plus.exe: error al cargar las bibliotecas compartidas:?: No puede abrir archivo de objeto compartido: Ningún archivo o directorio

Esto es muy confuso ya que funciona bien como una aplicación de consola independiente. ¿Alguien tiene idea de lo que está pasando? Que es esto "?" ¿biblioteca? ¿Por qué funciona bajo la consola pero no a través de VStudio?

I volcado mi PATH env var desde el interior de la aplicación de construcción y definitivamente incluye mi directorio cygwin/bin. ¿Se pierde inmediatamente después de esto? Si ejecuto el shell cygwin bash entonces/usr/bin está en la ruta.

¿Qué ofrece? ¿Alguien tiene alguna idea?

+0

Mis dos centavos: si solo necesita GCC (y sin POSIXness) en Windows, vaya a MinGW, por ejemplo desde aquí: http://mingw-w64.sourceforge.net/ Este es un GCC nativo que se ejecuta en Windows (sin, o si quieres con Cygwin). Es posible que tenga una configuración más simple sin la capa de Cygwin, si no es una parte necesaria de su aplicación, por supuesto. – rubenvb

+0

@rubenvb: Por desgracia, tiene que ser cygwin :( – Goz

+0

, entonces Rozuur tiene la respuesta sobre cuál es el problema. Cómo resolverlo es otro asunto desafortunado. Deberás asegurarte de que las herramientas de cygwin se invocan desde el entorno de Cygwin. ¿Cómo? Creo que llamarlos desde Cywgin's (ba) sh.exe funcionaría, pero podría haber otras/mejores formas. – rubenvb

Respuesta

5

No he intentado este problema con Visual Studio y no estoy seguro si esto resuelve su problema, pero se enfrentó a un problema similar al intentar compilar un programa con gcc de cygwin en windows con emacs. El gcc.exe de Siince cygwin no es un ejecutable, sino un tipo de enlace simbólico al ejecutable real (que es gcc-3.exe o gcc-4.exe según lo que haya instalado). En el shell de BASH, estos enlaces simbólicos se resuelven fácilmente, en cmd.exe no lo son.

+0

¡Esto tiene una gran posibilidad de ser realmente un problema! – rubenvb

+0

Este es un problema general con cygwin cuando se ejecuta desde cmd.ex mi. – Rozuur

+0

@Rozuur: Saludos, este parece ser el problema. Que dolor. Voy a realizar algunas pruebas más para asegurarme pero sospecho que obtendrás 315 puntos más de mí :) – Goz

3

Ejecute SysInternals ProcMon y vea qué archivos no se cargan?

+0

De lo contrario, sysinternals depends.exe también puede ser de gran utilidad. – Benoit

+0

Cierto, pero si estás jugando con las rutas y lo que a menudo es difícil obtener Depende de mostrarle lo que está mal y por qué mientras que ProcMon le mostrará las rutas exactas que se están probando y qué archivos no se pueden cargar ... –

+2

Punto de información: depends.exe no es un Sysinternals herramienta. –

Cuestiones relacionadas