Bonjour à toutes et à tous,
J'utilise l'unité "rpi_hal" pour gérer les GPIO sur mon Raspberry Pi 3B+ qui est un environnement 64 bits. Ce dernier a pour OS raspian Stretch et j'y utilise Lazarus 1.6.2
Dans cet environnement, la ligne suivante ne me produit aucune erreur :
BeginThread(@isr_handler,@isr,isr.ThreadId); // http://www.freepascal.org/docs-html/prog/progse43.html
Maintenant sur mon PC 64 bits avec Ubuntu 18.0.4 et Lazarus 2.0.6, cela me produit l'erreur suivante :
rpi_hal.pas(15793,31) Error: Incompatible type for arg no. 1: Got "<address of function(Pointer):LongInt;Register>", expected "<procedure variable type of function(Pointer):Int64;Register>"
La fonction "isr_handler est définie comme suit :
function isr_handler(p:pointer):longint; // (void *isr)
Si, sur mon PC, je remplace longint par int64, ça compile, mais alors, ça provoque l'erreur sur mon Raspberry.
Dois-je comprendre que Lazarus 1.6.2 attend des pointeurs 32 bits (bien que fonctionnant dans un environnement 64 bits) alors que Lazarus 2.0.6 attend des pointeurs 64 bits ?
Quelle balise de compilation employer pour faire cette différence.
Cordialement.
Pierre.
Partager