accès à fonction importée à accè à fonction importé.

accès à fonction importée à accè à fonction importé. - Ada - Programmation

Marsh Posté le 10-08-2009 à 21:47:54    

Bonjour, je doit affecter un accès à une fonction importé de C à un accès importé de C avec Ada.
Dans le code ci dessous par exemple... la function Pt_Time ne s'affecte pas ....
 
 
J'ai un paquetage PortTime ::=

Code :
  1. package Porttime is
  2.  
  3.   function Pt_Time return Long_Integer;
  4.   pragma Import (C, Pt_Time, "Pt_Time" );
  5. end Porttime;


Et un paquetage PortMidi ::=

Code :
  1. with System;
  2. with Interfaces.C;
  3. with System.Address_To_Access_Conversions;
  4. package Portmidi is
  5. function Pm_OpenOutput( PortMidiStream :System.address;
  6.                           OutputDevice : Integer;
  7.                           outputDriverInfo : System.address;
  8.                           BufferSize : Long_Integer;
  9.                           Time_Proc : access function return Long_Integer;
  10.                           Time_Info : System.address;
  11.                           latency : Long_integer) return PmError;
  12. end Portmidi;


 
Et une affectation à faire, je pensais logiquement la suivante ::=  

Code :
  1. Error := Pm_OpenOutput( PortMidiStream => PortMidiStream_Ptr,
  2.                           OutputDevice => device,
  3.                           outputDriverInfo => OutputDriverInfo_ptr,
  4.                           BufferSize => 10,
  5.                           Time_Proc => Pt_Time'access,
  6.                           Time_Info => Time_Info_ptr,
  7.                           latency => 2);


 
Et un compilo qui me dit ::
 

manu@Chaos:~/Harmonie$ gnatmake main -larg -lportmidi -lporttime
gcc-4.3 -c -larg -lportmidi -lporttime main.adb
main.adb:188:41: subprogram "Pt_Time" has wrong convention
main.adb:188:41: does not match convention of access access to subprogram with profile "T12s"
main.adb:188:41: probable missing pragma Convention for access to subprogram with profile "T12s"
gnatmake: "main.adb" compilation error


 
Merci !  :jap:
 
Edit : pardon je m'étais trompé.


Message édité par The matrix le 10-08-2009 à 21:50:23

---------------
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 10-08-2009 à 21:47:54   

Reply

Marsh Posté le 10-08-2009 à 22:04:35    

Up ! [:blackmetal]


---------------
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 10-08-2009 à 22:11:47    

Mon énoncé n'est pas clair.
Je désirerais affecter la fonction Pt_Time au paramètre Time_Proc.
 

Spoiler :


Vous avez 4 heures
 


Spoiler :


 
 [:dawa_neowen]  


Spoiler :


 [:chapi-chapo]  


Message édité par The matrix le 10-08-2009 à 22:12:09

---------------
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 10-08-2009 à 22:27:35    

done !
 
 
J'ai déclaré un type Time_access comme accès à fonction retournant un long et j'ai ajouté un pragma convention (C, Time_Access);
2points.


---------------
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