• Sábado 9 de Noviembre de 2024, 02:23

Autor Tema:  Mecla código C y C++, y otras dudillas.  (Leído 3678 veces)

memmaker650

  • Nuevo Miembro
  • *
  • Mensajes: 18
  • Nacionalidad: es
    • Ver Perfil
Mecla código C y C++, y otras dudillas.
« en: Miércoles 30 de Septiembre de 2009, 17:33 »
0
Buenas
Quiero  combinar C y C++ y ahora tengo dudas tanto en la creación como en la compilación.
Es decir en mi código defino en otro fichero un método o procedimiento en C al que invocaré desde otro programa que está escrito en C++. No hay posibilidad de cambiar el código de C a C++, es obligatorio que esté en C++. ¿¿Como lo compilo ?? ¿¿Primero el método usando gcc o lo compilo todo usando g++ ??' Tengo que seguir algún orden en especial ?? Es que todavía no me aclaro con lo de trabajar con varios ficheros. La llamada al método la hago normalmente o necesito hacer especial. ¿¿ Algo que deba tener en cuenta ??

Bueno, yo compilo usando makefiles. Tengo la duda de si esto se puede hacer. Una vez realizado pongamos un programa en C++, todo perfecto. Imaginemos que se requiere que funcione para diferentes architecturas. Por ejemplo para x86, x86_64 o PPC por poner un ejemplo. Podemos seleccionar en el makefile la arquitectura para la que queremos nuestro programa, y si es posible podríamos hacer compilaciones para las 3 tecnologías y que cada programa se guardará en una carpeta. Y hacer esto para distintos sistemas operativos, WIndows Xp, Linux y MAC OS X ????

Un saludo. Y gracias de antemano.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #1 en: Miércoles 30 de Septiembre de 2009, 18:44 »
0
El código de C es totalmente válido en C++ (por algo se llama C++, es decir, una extensión de C), así que con compliarlo todo como si fuera C++ no debería haber ningún problema.

En cuanto a lo de cross-compiling, no tienes que tener tampoco ningún problema. Eso sí, la compilación para cada una de las plataformas debes hacerla por separado, no importa que estén todos en el mismo Makefile o en distintos Makefile (aunque te aconsejo lo segundo así lo tienes más ordenado).

r0d

  • Miembro activo
  • **
  • Mensajes: 37
  • Nacionalidad: fr
    • Ver Perfil
    • http://r0d.developpez.com/index-es.php
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #2 en: Miércoles 30 de Septiembre de 2009, 19:25 »
0
Hola,

hay algunas cositas que saber para utilizar codico C en un proyecto C++. Es posible que ya sabes, pero lo recuerdo por si a caso:
    * El main() tiene que ser compilado con el compilador c++
    * Es el compilador c++ que debe encarcgarse del "link" (no se como se dice en castellano, es la ultima fase de la compilacion)
    * Es mucho preferible que el compilador C y el compilador C++ sean del mismo "constructor" (gcc, borland, microsoft...)
    * Para usar codigo c en un fichero c++, hay que usar la directiva extern "C" (mejor ponerlo directamente en el .h escrito en C):
Código: C++
  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4.  
  5. // mi codigo C
  6.  
  7. #ifdef __cplusplus
  8. }
  9. #endif
  10.  

Espero que ayude

memmaker650

  • Nuevo Miembro
  • *
  • Mensajes: 18
  • Nacionalidad: es
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #3 en: Miércoles 30 de Septiembre de 2009, 19:57 »
0
Cita de: "m0skit0"
El código de C es totalmente válido en C++ (por algo se llama C++, es decir, una extensión de C), así que con compliarlo todo como si fuera C++ no debería haber ningún problema.

En cuanto a lo de cross-compiling, no tienes que tener tampoco ningún problema. Eso sí, la compilación para cada una de las plataformas debes hacerla por separado, no importa que estén todos en el mismo Makefile o en distintos Makefile (aunque te aconsejo lo segundo así lo tienes más ordenado).

Gracias. He estado buscando info sobre lo del cross-compiling, pero no he encontrado ningun ejemplo ni nada parecido. Si pudieras poner algún ejemplo de las directivas o enlace con documentación te lo agradecería mucho.

nmaxcom

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #4 en: Jueves 1 de Octubre de 2009, 00:20 »
0
Me he tomado la libertad de corregir alguna cosilla, espero que no te importe y te pueda servir ^_^  Aunque a lo mejor me he equivocado yo también xD

Cita de: "r0d"
hay algunas cositas que debes saber para utilizar codico C en un proyecto C++. Es posible que ya sabeslo sepas, pero lo recuerdo por si a caso:
    * El main() tiene que ser compilado con el compilador c++
    * Es el compilador c++ que debe encarcgarse del "link" (no se como se dice en castellano, es la ultima fase de la compilacion) Creo que no se traduce el linking
    * Es mucho preferible que el compilador C y el compilador C++ sean del mismo "constructor"fabricante/origen/ de la misma empresa (gcc, borland, microsoft...)

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #5 en: Jueves 1 de Octubre de 2009, 01:47 »
0
Es la fase de enlazado.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

r0d

  • Miembro activo
  • **
  • Mensajes: 37
  • Nacionalidad: fr
    • Ver Perfil
    • http://r0d.developpez.com/index-es.php
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #6 en: Jueves 1 de Octubre de 2009, 02:00 »
0
muchisimas gracias por los correcciones  :)
:gracias:

hago lo que puedo, pero castellano es complicado  :argh:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #7 en: Jueves 1 de Octubre de 2009, 09:00 »
0
Y HABLAR (vivo en un pais francofono) frances mucho mas! Igual se te entiende perfectamente  :good:

EAU es O  :clown:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

memmaker650

  • Nuevo Miembro
  • *
  • Mensajes: 18
  • Nacionalidad: es
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #8 en: Jueves 1 de Octubre de 2009, 10:35 »
0
No pasa nada su mensaje había llegado.

Y algo de ayuda sobre el cross-compiling ??

r0d

  • Miembro activo
  • **
  • Mensajes: 37
  • Nacionalidad: fr
    • Ver Perfil
    • http://r0d.developpez.com/index-es.php
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #9 en: Jueves 1 de Octubre de 2009, 11:10 »
0
Cita de: "Eternal Idol"
Y HABLAR (vivo en un pais francofono) frances mucho mas! Igual se te entiende perfectamente  :good:

EAU es O  :clown:
bueno, no se cual es el mas complicado, pero claro que es complicado. Cuando llegué en españa, pensé: "aprender el español estare sencillo: estara como apprender un otro languaje de programación.". Pero la verdad es que no tiene nada que ver, es muchisimo mas complicado -__-!

Cita de: "memmaker650"
Y algo de ayuda sobre el cross-compiling ??
Depende de lo que quieres hacer. ¿Quieres compilar codigo en un pc distante?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #10 en: Jueves 1 de Octubre de 2009, 11:56 »
0
Cita de: "r0d"
Depende de lo que quieres hacer. ¿Quieres compilar codigo en un pc distante?
Cross-compiling = compilar en una máquina para otra de distinto SO o arquitectura.

Te dejo un par de enlaces interesantes:

http://en.wikipedia.org/wiki/Cross_comp ... ompilation
http://wiki.osdev.org/GCC_Cross-Compiler

Saludos

memmaker650

  • Nuevo Miembro
  • *
  • Mensajes: 18
  • Nacionalidad: es
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #11 en: Viernes 2 de Octubre de 2009, 10:16 »
0
Muchas gracias compañero. Buena información.

nmaxcom

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #12 en: Viernes 2 de Octubre de 2009, 14:49 »
0
r0d se te entiende perfectamente que es lo importante  ^_^  con el tiempo lo irás puliendo seguro.

memmaker650

  • Nuevo Miembro
  • *
  • Mensajes: 18
  • Nacionalidad: es
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #13 en: Viernes 2 de Octubre de 2009, 17:54 »
0
Lo siento pero no termino de coger los conceptos o no los sé aplicar. No encuentro por ningún lado ningún ejemplo ni de makefile ni de ningun helloWorld program y como compilarlo para por ejemplo otra arquitectura como puede ser x86_64 o para otro S.O. como MAC OS X o Windows Xp.

Si alguien tiene algun ejemplillo o supiera las directivas que tengo que incluir en el siguiente makefile que uso para conseguir el cross-compiling
Código: Text
  1. CC=g++
  2. CFLAGS=-c -Wall -Werror
  3. LDFLAGS=-g -O3 -lpthread -wlpdstm -L /Users/jorgevegasanchez/Desktop/SwissTM/recompilacion/files-MacOS/LIBRERIAS-MAC/wlpdstm-MAC/lib/libwlpdstm.a
  4. SOURCES=thread-exV-OpenCL-barrier.c
  5. OBJECTS=$(SOURCES:.cpp=.o)
  6. EXECUTABLE=threadV-OpenCL-barrier
  7.  
  8. all: $(SOURCES) $(EXECUTABLE)
  9.    
  10. $(EXECUTABLE): $(OBJECTS)
  11.     $(CC) $(LDFLAGS) $(OBJECTS) -o $@
  12.  
  13. .cpp.o:
  14.     $(CC) $(CFLAGS) $< -o $@
  15.  
  16. .PHONY: clean
  17.     clean:
  18.     -rm *.o
  19.  

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #14 en: Lunes 5 de Octubre de 2009, 13:32 »
0
¿Seguro que has visto los enlaces que te he dejado  &lt;_&lt; ? Como comentan en esos enlaces, debes incluir la opción --target a gcc para especificar para qué arquitectura deseas compilar. Y eso no lo veo en ningún sitio en tu makefile (corrígeme si me equivoco).

Aquí te dejo una lista de los posibles "targets": http://gcc.gnu.org/install/specific.html

memmaker650

  • Nuevo Miembro
  • *
  • Mensajes: 18
  • Nacionalidad: es
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #15 en: Lunes 5 de Octubre de 2009, 20:18 »
0
Eso es muchas gracias. No recordaba esa etiqueta.

Vale, esto segun leo es una combinación de arquitectura y sistema operativo, por lo que con esta directiva defino amabas cosas y se supone que haría que un mismo programa escrito en C++ funcionara en diferentes sistemas operativos y en ordenadores con distitnas arquitecturas.

Confirmame que no me equivoco.

Gracias por la contestación.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #16 en: Martes 6 de Octubre de 2009, 10:23 »
0
Cita de: "memmaker650"
por lo que con esta directiva defino amabas cosas y se supone que haría que un mismo programa escrito en C++ funcionara en diferentes sistemas operativos y en ordenadores con distitnas arquitecturas.
Sí, pero tendrías que compilarlo varias veces con diferentes "targets". También recuerda que las librerías de C/C++ difieren de un SO a otro, por tanto hay que tener cuidado con ello (sobre todo a la hora de compilar para Windows).

memmaker650

  • Nuevo Miembro
  • *
  • Mensajes: 18
  • Nacionalidad: es
    • Ver Perfil
Re: Mecla código C y C++, y otras dudillas.
« Respuesta #17 en: Miércoles 7 de Octubre de 2009, 12:23 »
0
ok. Como de momento no lo voy a utilizar. Tomaré unas notas para que no se me olvide y probaré con otras aplicaciones más pequeñas.