Pregunta:
¿Por que me tira este error? (Linux, NetBeans) - (Windows, Dev-c++) Programación en C?
2011-07-25 08:43:00 UTC
-------------------------------------------------------------------------------------------------------------------------------------------------

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: se ingresa al directorio «/home/rukairo/NetBeansProjects/CODIGO_4»
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/codigo_4
make[2]: se ingresa al directorio «/home/rukairo/NetBeansProjects/CODIGO_4»
mkdir -p dist/Debug/GNU-Linux-x86
gcc -lm -o dist/Debug/GNU-Linux-x86/codigo_4 build/Debug/GNU-Linux-x86/CODIGO4_1.o build/Debug/GNU-Linux-x86/main.o
build/Debug/GNU-Linux-x86/main.o: In function `main':
/home/rukairo/NetBeansProjects/CODIGO_4/main.c:14: multiple definition of `main'
build/Debug/GNU-Linux-x86/CODIGO4_1.o:/home/rukairo/NetBeansProjects/CODIGO_4/CODIGO4_1.c:11: first defined here
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/codigo_4] Error 1
make[2]: se sale del directorio «/home/rukairo/NetBeansProjects/CODIGO_4»
make[1]: *** [.build-conf] Error 2
make[1]: se sale del directorio «/home/rukairo/NetBeansProjects/CODIGO_4»
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 170ms)

-------------------------------------------------------------------------------------------------------------------------------------------------
En windows no me corre, use Dev-c++ y cuando lo voy a compilar simplemente aparece la ventana negra y se desaparece (ATENCION: el error no es causado por falta del comando system("PAUSE").

Aun no encuentro que parte del codigo hace que al momento de compilar, simplemente el proceso muera.

En fin, decidi probarlo en Linux:

Use un IDE llamado NetBeans 7.0
Use un Sistema Operativo llamado Xubuntu 11.04
Tengo instalado Build-Essentials
Utilizo el comando -lm para conectar (o llamar) correctamente la libreria math.h

El Codigo Fuente lo pueden descargar desde aqui: https://docs.google.com/leaf?id=0B3FEup2arsl7ZGYwNzExMjktOGQwZS00OWI4LWE5ZTMtNGJlNmUxZTc2ZDE1&

Recordad que es programación en C (no puedo usar getch xq es de c++)

Con respecto al link es 100% seguro, esta subido en google docs y es de formato .c (no es un ejecutable, por lo tanto no es peligroso)

de antemano muchas gracias por sus respuestas!


PD: Agradeceria enormemente a quien pudiera ayudarme a solucionar el problema (ya sea en Dev-c++ (usando windows) o en NetBeans (usando Linux).. Estoy seguro que el problema yace en el codigo fuente (FDTD_4.1.c) que pueden descargar en el link anterior.. solo hechenle una miradita, que ya llevo una semana sin poder resolver este error! :/

10 puntos y unas Gracias enormes, a quien me ayude a resolver este problema!
Cuatro respuestas:
Bye
2011-07-27 20:25:39 UTC
Revisé tu código, Max Maximum tiene razón, no sé quién fue el pendjo que le puso thumbs down. Si tú estás seguro que tu código está correcto entonces significa que estás reservando demasiada memoria de manera estática, le hice varias pruebas y definitivamente eso es el problema, debes reservar memoria de manera dinámica O disminuir los valores de tus constantes simbólicas IE, JE, KE, yo las puse en 30 y al menos el programa logró fluir más allá de la definición de los arreglos tridimensionales... ahora, si tienes errores más abajo sería cuestión de que TÚ lo arreglaras, y te voy a decir un detalle, pusiste dentro de tu ciclo principal while el return 0, creo que debería estar fuera, debe ser la última linea, justo antes de la llave que cierra la función main del programa, A MENOS que arbitrariamente quisieras que se termine el programa al completar la primera iteración de tu while principal (que creo que no es el caso).



Otra cosa más que noté y que no estoy seguro (no conozco el manejo de apuntadores a funciones) es que tienes en una linea:

FILE *fp, *fopen() ;



Creo que ese apuntador a esa función fopen() no lo necesitas, quédate con el apuntador al fichero fp, yo quité ese *fopen() y además con todas las modificaciones que te dije anteriormente el programa logró correr, me generó un archivo con un montón de números, ya corre... pero igual creo que tienes también errores de lógica, porque el archivo me lo llenó de puros 0.000 0.000 0.000 0.000... pero no sé, tal vez ese era el resultado que esperabas, no sé ni de qué se trata tu código.
2011-07-25 20:40:26 UTC
El problema está en la declaración de arrays multidimensionales. Lo puedes solucionar utilizando memoria dinámica.



Prueba crear los arreglos con este código:



#include

#include



float*** reservar_memoria(const int T1, const int T2, const int T3)

{

    float*** A = (float***)malloc(T1 * sizeof(float***));



    for (int i = 0; i < T1; i++) {

        A[i] = (float**)malloc(T2 * sizeof(float**));

        for (int j = 0; j < T2; j++)

            A[i][j] = (float*)malloc(T3 * sizeof(float*));

    }

    return A;

}



void liberar_memoria(float*** A, const int T1, const int T2)

{

    for (int i = 0; i < T1; i++) {

        for (int j = 0; j < T2; j++)

            free(A[i][j]);

        free(A[i]);

    }

    free(A);

}



int main()

{

    const int T1 = 10;

    const int T2 = 20;

    const int T3 = 30;



    float*** array = reservar_memoria(T1, T2, T3);



    array[0][0][0] = 50;



    printf("%.0f\n", array[0][0][0]);



    liberar_memoria(array, T1, T2);



    system("pause");

    return 0;

}



Saludos
German
2011-07-25 15:58:33 UTC
oye amigo!! yo normalmente compilo los codigos de C desde el terminal... con el compilador g++..



para instalarlo has esto:

> entra en el terminal y escribes apt-get install g++

> te pide la contraseña y luego esperas a que se instale..



y para compilar el codigo tienes que abrir nuevamente el terminal y ubicarte donde esta el codigo..

ejemplo:

- supongamos que el archivo(FDTD_4.1.c) esta en el escritorio en una carpeta que se llama codigo...

entonces:

desde el terminal escribes: cd Escritorio/codigo

presionas enter y luego escribes g++ FDTD_4.1.c

ahora se generara un archivo que sera el ejecutable en ñinux en este caso que se llamara a.out

entonces ahora procedemos a ejecutarlo desde el mismo terminal ejecutas a.out y se ejecutara el codigo que acabas de compilar y listo...



Ahora una cosa Amigo! descargue el codigo y lo trate de compilar pero al parecer este codigo tiene un error... trate de acomodar pero no entiendo para que estas usando una variable de nombre open.... pero bueno no lo corregi por que es tu codigo y tu si lo entiendes, yo no quise chequearlo ya que me tomaria tiempo....



Pero bueno espero te sirva esta informacion!



suerte!
2011-07-25 17:43:15 UTC
Hola!!



Pon el código que te da el error para darte una mejor respuesta.



Saludos ^^


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...