Thanks Tomas, 

I did a quick test and it works perfectly! 

Regards, Darius 

Tomas Hajny schreef op 20 mrt '14: 

> On Wed, March 19, 2014 23:49, Darius Blaszyk wrote:
> 
> Hi,
> 
>> I was wondering if it's possible to link FPC object files by using the $Link 
>> directive? At least I have troubles in getting this to work and therefore 
>> I'm asking here. Please consider the minimal example I have attached to this 
>> email. When linking the object file that implements the test_proc procedure 
>> I get the following compiler output: Hint: Start of reading config file 
>> C:lazarusfpc2.6.2binx86_64-win64fpc.cfg Hint: End of reading config file 
>> C:lazarusfpc2.6.2binx86_64-win64fpc.cfg Free Pascal Compiler version 2.6.2 
>> [2014/02/28] for x86_64 Copyright (c) 1993-2012 by Florian Klaempfl and 
>> others Target OS: Win64 for x64 Compiling test.pp Linking test.exe 
>> test.pp(8,1) Error: Undefined symbol: TEST_INT_TEST_PROC test.pp(8,1) Fatal: 
>> There were 1 errors compiling module, stopping What is needed in the 
>> test_impl.pas file so the linker can find the implemented function? Do I 
>> need to create a library and export the function perhaps?
> 
> Basically, you have two options:
> 
> 1) Provide the import declaration with the mangled name (i.e. the name
> really stored within the .o file). This may possibly change between
> different FPC versions, but if you intend to link to an existing object
> file, you would already know which one was used. In your case, this would
> mean changing line 7 in test_int.pas to:
> 
> procedure test_proc; external name 'TEST_IMPL_TEST_PROC';
> 
> (the mangled name may be found either by using -a when compiling
> test_impl.pas and looking into the generated test_impl.s or e.g. by using
> 'objdump -t test_impl.o'.
> 
> 2) Specify your own name during rather than relying on some mangling rules
> - change line 7 in test_impl.pas to:
> 
> procedure test_proc; export alias: 'My_Test_Proc';
> 
> and then line 7 in test_int.pas needs to change accordingly to:
> 
> procedure test_proc; external name 'My_Test_Proc';
> 
> Tomas
> 
> _______________________________________________
> fpc-pascal maillist - fpc-pascal@lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal [1]
 

Links:
------
[1] http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to