[Lazarus] TRTLCriticalSection

Antonio Fortuny a.fortuny at sitasoftware.lu
Tue Feb 25 11:22:57 CET 2014


Hi Folks.

Lazarus 1.0.2, FPC 2.6.2, Win32 and Linux x86_64
Something goes wrong with TRTRCriticalSection. There is a difference 
between Windows and Linux.
In a program which will run on Win32 and Linux x86_64, using threads and 
all this stuff I need to protect some code from multi-threading access.
One critical section looks enough to do the job.
So i code this in Win32 and Linux:

Interface uses clause is:
uses
   {$IFDEF LINUX}
   CThreads,
   {$ENDIF}
   syncobjs,
   {$IFDEF MSWINDOWS}
   windows,
   {$ENDIF}
   {$IFDEF LINUX}
   LCLIntf,
   {$ENDIF}
   Classes,
   IdContext,
   uSimplelogger,
   sitacom,
   MessageQ,
   autoupdateTCPthread,
   sqldb,
   SysUtils;
     FIniCriticalSection: TRTLCriticalSection;
     ...
     InitializeCriticalSection(FIniCriticalSection); <----------------- 
compilation error
     ...
     EnterCriticalSection(FIniCriticalSection);
     try
         ... do a lot of things
     finally
         LeaveCriticalSection(FIniCriticalSection);
     end
     ...

On the above line marked as compilation error the compiler complains 
with the message
autoupdateserverthread.pas(255,48) Error: Call by var for arg no. 1 has 
to match exactly: Got "TRTLCriticalSection" expected "QWord"
*winapi.inc*(650,11) Hint: Found declaration: 
InitializeCriticalSection(var QWord);
winapi ??? Why on Linux ?
No way to get rid of this compilation error
In Win32 the program compiles and runs without errors.

Some help would be appreciated.

Antonio.




---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20140225/fef6f935/attachment-0002.html>


More information about the Lazarus mailing list