On 21/06/15 23:08, Jonas Maebe wrote:
On 21/06/15 21:43, patspiper wrote:
program Project1;
{$Linklib kernel32}
   Function GetTickCount: DWORD; external;
begin
   WriteLn ('GetTickCount ', GetTickCount);
end.
project1.lpr(10,1) Error: Undefined symbol:
P$PROJECT1_$$_GETTICKCOUNT$$LONGWORD

Changing the GetTickCount declaration to any of the following works:
   Function GetTickCount: DWORD; external name
'_$dll$kernel32$GetTickCount';
   Function GetTickCount: DWORD; external 'kernel32';

Why is the behaviour different between Linux and Windows?
ELF (used by Linux) and PECOFF (used by Windows) use completely
different ways of shared linking.
So what should be done to remedy the Windows case when $LINKLIB is used, that is unless $LINKLIB is not to be used with Windows?

Note that in the 2 'solutions' I gave, $LINKLIB is not needed and can be removed altogether.

Stephano
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to