[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