SoloCodigo
Programación General => C/C++ => Visual C++ => Mensaje iniciado por: santivader en Jueves 16 de Septiembre de 2010, 02:19
-
Antes que nada muy buenas a todos , soy nuevo en el foro asi que pido disculpas si este tema ya ha sido contestado anteriormente . mi problema es el siguiente : Estoy compilando un programa escrito en C , en visual C++ 2008 ; el programa tiene varias librerias .h y varios .c me compile todo bien salvo uno de los archivos . c que me da el siguiente error
"cl : Línea de comandos error D8045 : no se puede compilar el archivo de C '.Xxxxxxx.C' con la opción /clr"
En opciones de proyecto -propiedades de config - c/c++ - avanzadas tengo configurada la opcion Compilar como código de C (/TC) y en la solapara general en la opcion Compatible con Common Language Runtime tengo seleccionado Compatible con Common Language Runtime (/clr) con esa configuaracion el programa me da un solo error que es el anterio , si modifico a no es Compatible con Common Language Runtime tengo muchos erros como por ejemplo
""""Fatal error C1083: No se puede abrir el archivo incluir: 'print.h': No such file or directory""
Necesito ayuda con esto lo antes posible desde ya muca gracias . (de ser necesario les subo el codigo )
-
Lo primero es que no puedes activar el compilador de C con C++/CLI (la opción /clr), en modo mixto tienes que usar C++.
Lo otro es que te faltan las rutas a los ficheros.
Si te dice que no puede encontrar "print.h" es porque ese fichero no está en ningún sitio en donde busca el compilador, incluida la carpeta en donde está el fichero que hace la llamada de la inclusión.
-
muchas gracias amigo ya entendi los de las opciones del compilador y la libreia gracias a tu orientacion y luego de un par de horas en la web mis errores se reducen basicamente ahora a :
swemptab.c
c:openastroopenastro.org-1.1.23.origpyswissephpyswisseph-1.75.01srcswemptab.c(84) : error C2061: error de sintaxis : identificador 'mertabl'
c:openastroopenastro.org-1.1.23.origpyswissephpyswisseph-1.75.01srcswemptab.c(84) : error C2059: error de sintaxis : ';'
c:openastroopenastro.org-1.1.23.origpyswissephpyswisseph-1.75.01srcswemptab.c(84) : error C3409: no se permite un bloque de atributos vacío
la linea de codigo donde me da el eroor es
static double FAR mertabl[] = {
35.85255, -163.26379, 53810162857.56026, 908082.18475,
0.05214, -0.07712,
1.07258, 0.04008, 0.49259, 0.00230,
0.02324, 0.05869,
0.24516, 0.22898, -0.06037, 0.13023,
0.00331, -0.03576,
0.06464, 0.00089,
};
y lo otro son como 200 warning con
warning C4996: 'sprintf': This function or variable may be unsafe.
desde ya muchas gracias
-
Quita el "FAR" de la declaración del array. Eso es de la época de los 16 bits. Aparte de ser un anacronismo creo que ya no está definido en los compiladores modernos.
Lo del warning se debe a que sprintf() está "obsoleta" por MS ya que es uno de los caminos por los cuales se pueden producir fallos de seguridad mediante desbordamiento de bufer. El equivalente moderno es sprintf_s(), pero tiene más parámetros.
http://msdn.microsoft.com/en-us/library ... kh(v=VS.80 (http://msdn.microsoft.com/en-us/library/8ef0s5kh(v=VS.80" onclick="window.open(this.href);return false;)).aspx
Ahí te explica que puedes o bien poner las funciones _s o bien poner
#define _CRT_SECURE_NO_WARNINGS
antes de las inclusiones de los ficheros cabecera estándar.
Yo te recomiendo que sustituyas las funciones normales por las seguras a no ser que necesites que tu código compile para linux o mac...
-
efectivamente me soluciono mucho de los incovenientes el problema que tenia extructuras declaradas como
static struct plantb FAR mer404 = {
{ 11, 14, 10, 11, 4, 5, 2, 0, 0,},
6,
merargs,
mertabl,
mertabb,
mertabr,
3.8709830979999998e-01,
};
y al quitarles el far me dice
error C2079: 'mer404' utiliza struct 'plantb' sin definir
error C2078: hay demasiados inicializadoresme
-
Te está diciendo que has inicalizado la estructura (o el array de estructuras) con demasiados elementos. Mira a ver cual sobra.
-
miere pero no ecuentro cula me sobrea la extructura es
struct plantbl {
char max_harmonic[9];
char max_power_of_t;
signed char *arg_tbl;
double *lon_tbl;
double *lat_tbl;
double *rad_tbl;
double distance;
};