Le 25/02/2014 12:04, Sven Barth a écrit :
Am 25.02.2014 11:22, schrieb Antonio Fortuny:
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:

[snip]
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.
The function for initializing a TRTLCriticalSection is InitCriticalSection, not InitializeCriticalSection. If you wouldn't use the Windows unit you'd have seen this error on Windows as well.
The windows unit is used in the Win32 box (look at the conditional uses clause)

Antonio;

@Michael: maybe we should add a seealso for the Init-/Enter-/Leave-/DoneCriticalSection functions to the documentation of the TRTLCriticalSection type.

Regards,
Sven


--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus



---
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
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to