Compilación en C++

hola amigos, estoy trabajando en un proyecto con raspberry pi y una IMU orientus de advance navigation, además de un escudo de Navio+, la IMU la trabaje toda en C pero para la navio todo el desarrollo y códigos ejemplo están en C++, intento compilar todo en C++ y no me deja intento en C y tampoco me deja, que debería modificar o tener en cuenta para pasar de uno al otro ???

muchas gracias por la ayuda!.
 

Adjuntos

  • prueba1.jpg
    prueba1.jpg
    20.8 KB · Visitas: 37
  • prueba2.PNG
    prueba2.PNG
    13.2 KB · Visitas: 35
La compilacion en C++ deberia funcionar, y ese error que te da deberia ser simple de resolver.... pero me parece que no sabes mucho del tema.
 
En C no funcionara por que no existen namespace, en C++ no debe haber problema mayor, pero no creo que un tipo void (que no devuelve nada) se pueda convertir en otro tipo.
 
En C como dice Nuyel es imposible, en C++ hay que tener en cuenta que se deben definir las funciones en C utilizando "extern" ya que en C++ se codifican los tipos de parametros en el nombre de la funcion, ya que varias funciones con el mismo nombre pueden tener distintos parametros (overloading)

Esto en C no existe y para compatibilizar C con C++ se utiliza "extern" para incluir las funciones de C en las de C++.
 
El problema pareciera que fuera de casteo en el tipo de puntero.

La verdad que nunca combine los dos lenguajes, así que tampoco estoy del todo seguro como deberían ser las definiciones. De todas formas, si esta dentro de lo razonable, tal vez sea una buena idea llevar las funciones hechas en C a una clase y "encapsularlas".
 
No le den mas bola al asunto. El que pregunto no volvio a aparecer y no tiene idea de cual es el problema, ya que si no hubiera subido el codigo para analisis.
 
perdón por contestar tan tarde, como dice el Dr Zoidberg no se mucho, se lo básico en C/C++, por eso acudo al foro al buscar una solución, la respuesta de chclau busque lo de 'extern' en las librerias, y pues este lo incluye, les comentaba estoy usando una IMU más específicamente esta:

no puedo subir el links, soy muy nuevo :unsure::unsure:
el fabricante de la IMU es advancednavigation
la referencia es la Orientus,
y pues estoy usando el SDK que ellos proporcionan
de nuevo me disculpo por no poder subir el link

el fabricante proporciona las librerías,dicen que funciona en C/C++ pero cuando compilo con G++, no funciona me aparece el error antes comentado, cuando uso GCC compila normal crea el archivo para correr el programa, muchas gracias por la ayuda, además de la paciencia.
 

Adjuntos

  • Error_C++.jpg
    Error_C++.jpg
    26 KB · Visitas: 16
No entiendo nada :(
Para que diablos usás g++ si todos los archivos tienen extensión .c ????
gcc sabe elegir el compilador adecuado para cada tipo de lenguaje basado en las extensiones de los archivos fuente. En tu caso, todos tienen extensión .c y gcc entiende que todos son archivos en C, no en C++ !!!!!
Si uno de esos archivos está en C++, la extensión debería ser .cpp (es la mas sana para usar).
Leé esto y esto antes de seguir inventando cosas raras. Y no digás que no sabés o que sos nuevo, LO MISMO TENES QUE ESTUDIAR!!!!!! :( :( :( :(
 
uso G++ porque trabajo con la raspberry pi 2 con el escudo de Navio+, todo los ejemplos están en C++ por ende ellos trabajan con G++, el fabricante de la IMU dice que funciona con C++ pero pues pruebo y no logro que funcione, de igual forma uso las librerías de RS-232 de teuniz/RS-232


son de C, cuando las compilo con G++ crea el archivo a ejecutar, se debe de cambiar algo en las librerías de la IMU para poder compilar con G++ pero no encuentro solución,
adjunto los capturas de pantalla cuando compilo las los ejemplos de uso RS-232,
con GCC


con G++



cuando lo haga con la IMU debería funcionar, pero no es así.
 

Adjuntos

  • GCC.PNG
    GCC.PNG
    51.6 KB · Visitas: 12
  • C++.PNG
    C++.PNG
    58.3 KB · Visitas: 10
Y que se supone que dice el archivo howto_compile.txt ?????
Y si con gcc compila bien, por que no usás ese y listo???? Te repito: gcc sabe elegir el compilador correcto para cada archivo y uno de los links que te dí te dice que agregar a la cli si te genera errores el linker. Compilá con gcc y ya...
 
Última edición:
como te comentaba, estoy trabajando en la Navio+ y todo es en C++, no es una opcion trabajar en C.
No estas entendiendo nada.
Gcc no es un compilador sino una coleccion de compiladores (leiste los links que te di????... los emtendiste???) Asi que es capaz de compilar cialquier codigo y no solo C.
Por ptra parte, no tiene nada que ver que unas cosas esten en C++ y otras en C, ya que ambos lenguajes pueden mezclarse sin problemas. Que eso sea una buena opcion es muy discutible, pero es posible hacerlo.
Te recomiendo que vayas y estudies C, C++ y gcc, por que no sirve tratar de adivinar como hacerlo.
Cuando termines de estudiar seguimos hablando.
 
El mensaje de error dice que se ha intentado una conversión de puntero, desde void * a an_packet_t *, que por defecto no está permitido porque el compilador no sabe si los dos punteros pueden apuntar a estructuras semejantes.

El propio mensaje de error dice que lo puedes saltar añadiendo la opción -fpermissive a las opciones de compilación.
 
Hola JoaquinFerrero, muchas gracias, añadiendo lo que comentas al compilar muestra una precaución pero al parecer no afecta el funcionamiento de la IMU, muchas gracias por tu ayuda, voy a probarlo todo junto y voy comentado.
 
Última edición:
Atrás
Arriba