[Résolut]liaison Ada avec un .o C

liaison Ada avec un .o C [Résolut] - Ada - Programmation

Marsh Posté le 12-08-2009 à 19:20:47    

Salut,
 
J'utilise donc la lib portmidi qui fournie une fonction OpenOutput().
Cette fonction modifie les argument passés en paramètre.
Donc, je ne peu pas faire d'import avec Ada.
J'ai donc écris un petit code pour contourné le problème.
Je me retrouve avec un .o.
Mais j'ai oublié comment lier mon objet avec ce .o.
Qui me dis ?
Merci !


Message édité par The matrix le 12-08-2009 à 20:31:56

---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
Reply

Marsh Posté le 12-08-2009 à 19:20:47   

Reply

Marsh Posté le 12-08-2009 à 19:56:42    

Hello !
 
J'ai trouvé a priori... Mais ça marche pas tout de même... Alors, je sais pas quoi poser comme question... A part peut-être ... Pourquoi ? Ou encore Comment ?
 
j'ai essayé de compiler avec le commande suivante :

gnatmake -o main main.adb -largs open_handler.o -lportmidi -lporttime


 
Ou portmidi et porttime son deux bibliothèque et open_handler le petit code C suivant :

Code :
  1. #include <stdio.h>
  2. #include <portmidi.h>
  3. #include <porttime.h>
  4.  
  5. #define DRIVER_INFO NULL
  6. #define OUTPUT_BUFFER_SIZE 0
  7. #define TIME_PROC ((long (*)(void *)) Pt_Time)
  8. #define TIME_INFO NULL
  9. #define TIME_START Pt_Start(1, 0, 0) /* timer started w/millisecond accuracy */
  10.  
  11. long latency = 0;
  12.  
  13. int Open_Handler (int device) {
  14.  
  15.  PmStream * midi;
  16.  
  17.  TIME_START;
  18.  
  19.  Pm_OpenOutput(&midi,
  20.                device,
  21.                DRIVER_INFO,
  22.                OUTPUT_BUFFER_SIZE,
  23.                (latency == 0 ? NULL : TIME_PROC),
  24.                (latency == 0 ? NULL : TIME_INFO),
  25.                latency);
  26.  return midi;
  27. }


Que puis-je faire ? Merci !
 
 
 
Ps : Message d'erreur suivant

gnatbind -x main.ali
gnatlink main.ali -o main open_handler.o -lportmidi -lporttime
./main.o: In function `_ada_main':
main.adb:(.text+0x42b): undefined reference to `Open_Handler'
collect2: ld returned 1 exit status
gnatlink: error when calling /usr/bin/gcc-4.3
gnatmake: *** link failed.


Message édité par The matrix le 12-08-2009 à 20:01:19

---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
Reply

Marsh Posté le 12-08-2009 à 20:06:54    

Yep !
 
Alors, je ne sais si c'est la seule explication mais... J'ai déplacé la déclaration de PmStream * midi; à l'extérieur de la parti exécutive et.... Ca marche ! [:kadreg]


---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed