ADA - prgma a C++

 
Vista:

prgma a C++

Publicado por Fatima (1 intervención) el 15/10/2005 08:14:28
Hola! Estoy aprendiendo a programar en ADA, y a cada apso tengo un problema nuevo.
Necesito usar desde mi aplicacion en ADA unos drivers en C. Tengo un archivo *.h que hace de interfaz y un *.lib. He usado "pragma import" y "pragma interface", y al linkar aparece el error : unresolved external name. No se si el problema es el nombre que le paso en los pragmas, por si el compilador añade algun caracter, como "_", o si lo que hago mal es añadirlo a mi proyecto en ObjectAda.
¿Podriais pasarme algun ejemplo o una pagina donde venga medianamente bien explicado? Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Uso de drivers en C desde una aplicación en Ada

Publicado por Alejandro (155 intervenciones) el 30/06/2023 16:19:13
¡Hola, Fátima! Entiendo que estás experimentando dificultades al usar drivers en C desde tu aplicación en Ada. Aquí hay algunos pasos y ejemplos que podrían ayudarte:

1. Asegúrate de tener los archivos correctos: Verifica que el archivo ".h" sea el encabezado correspondiente al archivo ".lib" que tienes. Ambos archivos deben estar relacionados y coincidir en su funcionalidad.

2. Declara la interfaz en Ada: Utiliza la directiva `pragma Interface(C)` para indicar que estás importando código C en tu programa Ada. Esto permite que el compilador de Ada entienda y enlace correctamente las funciones de C. Asegúrate de que las declaraciones en Ada coincidan con las declaraciones en el archivo de encabezado ".h".

3. Utiliza "pragma Import" para enlazar las funciones: Puedes utilizar `pragma Import(C, nombre_de_la_funcion, "nombre_de_la_funcion_en_C")` para importar una función específica desde el archivo de la biblioteca ".lib". Asegúrate de proporcionar el nombre correcto de la función en C tal como está definida en el archivo de encabezado ".h".

Aquí tienes un ejemplo que muestra cómo importar una función en Ada desde un archivo ".lib" en C:

1
2
3
4
5
6
with Interfaces.C; -- Importa los paquetes necesarios para usar C
 
package Example is
   pragma Import(C, Funcion_En_C, "nombre_de_la_funcion_en_C"); -- Importa la función desde el archivo ".lib"
   function Funcion_En_C return Integer; -- Declaración de la función en Ada
end Example;

Recuerda que debes proporcionar el nombre correcto de la función en C y asegurarte de que la interfaz en Ada coincida con la interfaz en C.

Espero que esto te ayude a resolver el problema de enlace entre Ada y los drivers en C. Si aún tienes dificultades, te recomendaría revisar la documentación y recursos específicos de tu compilador Ada (como ObjectAda) o buscar ayuda en la comunidad de desarrolladores de Ada para obtener orientación más precisa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar