Yes. I remember some mails you sent on this subject some months ago.��
I wonder why Python / Ruby can manage mangled names and that FFI don't. Because it's a real pain.
Laurent.
The most recent encounter I had with this was on Windows, and I left behind the following comment:
�� �� �� ��The conspicuous (in hindsight) absence of extern "C" from
�� �� �� ��the header file comes at a price: the names are mangled.
�� �� �� ��Enter pexports.exe and some copy/paste with periodic
�� �� �� ��acerbic remarks.
Translation: if you have not done this, consider using pexports.exe to obtain the true exported symbol names, and put them (with ?@, etc. intact) in your FFI definitions. ��HTH.
Bill
Sent: Friday, May 06, 2011 2:34 PM
From: pharo-project-bounces@lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr> [pharo-project-bounces@lists.gforge.inria.fr<mailto:pharo-project-bounces@lists.gforge.inria.fr>] On Behalf Of laurent laffont [laurent.laffont@gmail.com<mailto:laurent.laffont@gmail.com>]
Sent: Friday, May 06, 2011 1:47 PM
To: Pharo-project@lists.gforge.inria.fr<mailto:Pharo-project@lists.gforge.inria.fr>
Subject: Re: [Pharo-project] Popularity of Smalltalk in Software Industry
On Fri, May 6, 2011 at 7:25 PM, Igor Stasenko <siguctua@gmail.com<mailto:siguctua@gmail.com><mailto:siguctua@gmail.com<mailto:siguctua@gmail.com>>> wrote:
On 6 May 2011 18:45, laurent laffont <laurent.laffont@gmail.com<mailto:laurent.laffont@gmail.com><mailto:laurent.laffont@gmail.com<mailto:laurent.laffont@gmail.com>>> wrote:
> On Fri, May 6, 2011 at 4:01 PM, Igor Stasenko <
siguctua@gmail.com<mailto:
siguctua@gmail.com><mailto:
siguctua@gmail.com<mailto:
siguctua@gmail.com>>> wrote:
>>
>> Is it works because someone already provided a bindings for libraries
>> you mention,
>> or you did it by yourself?
>
> Have just used ctypes:
>>>> import ctypes
>>>> import ctypes.util
>>>> ctypes.util.find_library("yaz")
> '/usr/local/lib/libyaz.dylib'
>>>> yaz = ctypes.cdll.LoadLibrary("libyaz.dylib")
>>>> con = yaz.ZOOM_connection_new("z3950.loc.gov<http://z3950.loc.gov><http://z3950.loc.gov>", 7090);
oh cool.. give me a 5 minutes to load external library, look up the
random symbol exported by it
and make a call to it with random number of arguments, and expect it
won't crash.
Works outta box! Cool.
Now serious. How about spending time writing a bindings for that library?
Where you have properly organized classes/interfaces, error handling
and other stuff.
No takers?
Seriously, if you want such kind of shitty interface, which allows you
to call arbitrary function with arbitrary arguments
without any argument type checking, i can write it for you.
Do it, please do it. Seriously. Thanks
Laurent.
> Laurent
--
Best regards,
Igor Stasenko AKA sig.