[fpc-pascal] FPC linker oddity

patspiper patspiper at gmail.com
Sun Jun 21 22:20:08 CEST 2015


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



More information about the fpc-pascal mailing list