[Pharo-users] uFFI ExternalAddress challenges

Tomaž Turk tomaz.turk at ef.uni-lj.si
Wed Sep 11 05:07:01 EDT 2019

Hi, thanks for your quick reply. I found the culprint while writing this 
email :-)

Generally, what I'm trying to do is to make a very basic package to 
create and communicate with COM components on Windows, mostly as an 
exercise :-) I found this library: http://disphelper.sourceforge.net/ as 
a great start, so you don't have to fiddle with OLE/COM headaches.

The problematic function in C is defined as:

__declspec(dllexport) void CallMethod(void* myObj) {

It takes a pointer to a COM object, which was previously returned by

__declspec(dllexport) void* CreateObject(char* szProgId) {
    IDispatch * myObj = NULL
    return &myObj;

So, CreateObject() creates COM object and returns a pointer to it, 
CallMethod() takes this pointer and tries to communicate with it.

My error was in returning a pointer to a pointer ... since IDispatch * 
myObj = NULL was actually hidden in a macro and I missed its true 
definition, huh.

I'm running Pharo from PharoLauncher directly on Win10, without 
cygwin/mingw. For DLL I use Visual Studio 2019. I was not sure whether 
the pointer survives from one FFI call to another, or how Pharo 
loads/unloads DLLs - but it works as expected.

Thanks again and best wishes,

------ Original Message ------
From: "Guillermo Polito" <guillermopolito at gmail.com>
To: "Tomaž Turk" <tomaz.turk at ef.uni-lj.si>; "Any question about pharo is 
welcome" <pharo-users at lists.pharo.org>
Sent: 11. 09. 2019 10:29:34
Subject: Re: [Pharo-users] uFFI ExternalAddress challenges

>Hi Thomas,
>Can you share more about the definition of your CallMethod function in 
>From the uFFI point of view the binding looks ok…
>How are you opening Pharo? From the command line or the pharo launcher?
>Are you on cygwin/mingw? One other possibility (since you’re playing 
>with C libraries) is to launch Pharo inside a gdb/lldb so you can check 
>the reason behind the error when it crashes.
>Keep us posted,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/attachments/20190911/fd9e610d/attachment.html>

More information about the Pharo-users mailing list