Hello.

Thanks to Mister Hinst, i was able to load and run, in Windows, with 
dynlib.pas, SoundTouch.dll. Perfect and re-thanks.

Now, i begin a other hard battle : load and run in Linux, libSoundTouch.so.

With the extremely helpful message of Mister Ewald :> Try to find the names of 
the symbols defined in the shared object (nm comes to mind).

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() !!!

And, believe it or not... it works...

I have only a problem with one procedure:

This c procedure is declared as this :
SOUNDTOUCHDLL_API void __cdecl soundtouch_setSampleRate(HANDLE h, unsigned int 
srate);

And i translate it like that :

soundtouch_setSampleRate : procedure(h : THandle; srate :  cardinal); cdecl;
and for dynamic-loading :
Pointer(soundtouch_setSampleRate):= GetProcAddress(LibHandle, 
Pchar('_ZN10soundtouch10SoundTouch13setSampleRateEj'));

Sadly i get that message when i try to load that procedure :  

An unhandled exception occurred at $00007F7D76D61AE8:
EAccessViolation: Access violation  $00007F7D76D61AE8
(program exited with code: 217)

Does somebody have some light for this ?

Many thanks.

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

Reply via email to