[fpc-pascal] windows.GetProcAddress() vs DynLibs.GetProcAddress()

Ludo Brands ludo.brands at free.fr
Fri Jan 17 16:08:16 CET 2014


On 01/17/2014 03:55 PM, Fred van Stappen wrote:
> 
>> > I run nm and find the name of the procedures ( PS : without
> nm-Ewald's tip, you must be a high soothsayer to find it)
>> > For example, a C called procedure : soundtouch_getVersionString()
> becomes : _ZN10soundtouch10SoundTouch16getVersionStringEv() !!!
>> >
>>
>> The _ZN10soundtouch10SoundTouch16getVersionStringEv name mangling
>> suggests that this is a C++ lib, not a C lib. Generally speaking, you
>> can't call C++ libs from fpc.
>>
>> Ludo
> 
> Yep, Ludo, many thanks to take care but...
> 
> I have a test program who use some procedures to test , for example :
> 
>  FVersionID := soundtouch_getVersionId();
>  FVersionString := StrPas(soundtouch_getVersionString());  
>  
>   writeln(FVersionID);
>   writeln(FVersionString);
> 
>>>> Result :
> 
>> 10800
>> 1.8.0
> 
> So, it seems to work...
> 
> Those procedures are declared as this :
> 
> Pointer(soundtouch_getVersionId)    := GetProcAddress(LibHandle,
> Pchar('_ZN10soundtouch10SoundTouch12getVersionIdEv')); 
>  
> Pointer(soundtouch_getVersionString):=
> GetProcAddress(LibHandle,Pchar('_ZN10soundtouch10SoundTouch16getVersionStringEv')); 
> 
> 
That are functions without any parameters that seemingly don't do a lot.
Do you have any function working that takes a handle as a parameter?
What is the value of the handle that was returned?

Ludo




More information about the fpc-pascal mailing list