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
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to