I've loaded your package.

A prerequisite is to load OS-Window to make it work.

I've got the DLL call working nicely and the nativeboost with the structure
freezing.

Now, we should all have a look at:

https://github.com/ronsaldo/bullet-pharo

and

https://github.com/ronsaldo/swig

because it looks like the way to go to wrap libraries...

Ronie, I know you modified swig for generating Pharo code;

Is cloning your swig repo the way to go ?


Phil




On Wed, May 6, 2015 at 10:39 AM, Usman Bhatti <usman.bha...@gmail.com>
wrote:

> Hi Nicolai,
>
> Here is my package that defines the nativeboost call and associated C
> structs.
> The external C struct is self referencing and hence sometimes I get
> infinite recursion when trying to change field descriptions. That is the
> reason why the automatically generated accessors are absent (although I had
> them in an earlier version).
>
> Attached also the DLL referenced in the code.
>
>
>
> On Wed, May 6, 2015 at 9:58 AM, Nicolai Hess <nicolaih...@web.de> wrote:
>
>>
>>
>> 2015-05-06 9:53 GMT+02:00 Usman Bhatti <usman.bha...@gmail.com>:
>>
>>>
>>>
>>> On Tue, May 5, 2015 at 7:34 PM, p...@highoctane.be <p...@highoctane.be>
>>> wrote:
>>>
>>>>
>>>> On Tue, May 5, 2015 at 6:28 PM, Usman Bhatti <usman.bha...@gmail.com>
>>>> wrote:
>>>>
>>>>> I succeeded to do it by encapsulating the C routine as a DLL and doing
>>>>> an FFI call from my image (as suggested by Guille).
>>>>>
>>>>
>>>> At least there was a way!
>>>>
>>>
>>> Exactly :)
>>>
>>>
>>>>
>>>> Looks like this is the most controlled|debuggable way:
>>>>   - get it working with C code out of Pharo
>>>>   - make a bridge that can be used easily with FFI in a dll
>>>>   - use that from Pharo with proven FFI
>>>>
>>>> Would NativeBoost work with your dll? Should.
>>>>
>>>
>>> I have read a few resources about Nativeboost but I am still naive to
>>> know the difference between FFI and nativeboost. The FFI call I made to
>>> invoke the DLL function looked similar to the nativeboost calls.
>>>
>>>
>>>>
>>>>
>>>> I also tried to perform the nativeboost call by creating my structures
>>>>> in Pharo. The function in Windows that can be used to retrieve mac address
>>>>> in Windows: GetAdaptersInfo
>>>>> <https://msdn.microsoft.com/en-us/library/windows/desktop/aa365917%28v=vs.85%29.aspx>
>>>>>  that
>>>>> accepts a PIP_ADAPTER_INFO
>>>>> <https://msdn.microsoft.com/en-us/library/windows/desktop/aa366062(v=vs.85).aspx>
>>>>>  structure.
>>>>> I subclassed NBExternalStructure to define this struct and the other used
>>>>> by it in the image but my NB call returned with 87 code (Invalid 
>>>>> parameter)
>>>>> and it was impossible to debug. However, I would like to make this thing
>>>>> work to understand what went wrong.
>>>>>
>>>>
>>>> Has this something to do with 32|64 bit library complications?
>>>>
>>>
>>> Not exactly. For me, it was more related to the fact that I had to map a
>>> complex C struct in Pharo. Here is an excerpt of the definition from MSDN:
>>>
>>> typedef struct _IP_ADAPTER_INFO {
>>>   struct _IP_ADAPTER_INFO  *Next;
>>>  ...
>>>   PIP_ADDR_STRING         CurrentIpAddress;
>>>           IP_ADDR_STRING          GatewayList;
>>> ...
>>> }
>>>
>>> So, I had to define three external structures (all names in capitals)
>>> and I did the effort but in the end I got an error code that I could not
>>> debug in the image. Hence, I gave up and opted to go in the native
>>> environment. But I would like someone knowledgable to have a look at my
>>> nativeboost code  because the nativeboost approach is more simple
>>> (everything's in the image).
>>>
>>
>> I can have a look.
>>
>> btw. for what do you need the mac address?
>>
>>
>>
>>>
>>>
>>>
>>> usman
>>>
>>>
>>>>
>>>> Phil
>>>>
>>>>>
>>>>> With ProcessWrapper, I could not load the classes essential for making
>>>>> the plugin work.
>>>>>
>>>>> HTH,
>>>>>
>>>>> Usman
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, May 4, 2015 at 2:54 PM, Ben Coman <b...@openinworld.com> wrote:
>>>>>
>>>>>> As a complete newb to VM building I found this fairly straight
>>>>>> forward (on a Mac btw).
>>>>>> https://github.com/pharo-project/pharo-vm
>>>>>> cheers -ben
>>>>>>
>>>>>> On Mon, May 4, 2015 at 5:28 PM, Usman Bhatti <usman.bha...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Sun, May 3, 2015 at 4:22 PM, Pierce Ng <pie...@samadhiweb.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On Sat, May 02, 2015 at 03:55:47PM +0200, Usman Bhatti wrote:
>>>>>>>> > 1/ OSProcess: I tried  (PipeableOSProcess command: 'ipconfig
>>>>>>>> /all') output.
>>>>>>>>
>>>>>>>> I have used http://www.smalltalkhub.com/#!/~hernan/ProcessWrapper
>>>>>>>> successfully
>>>>>>>> back when I was on Windows using some now-ancient version of Pharo.
>>>>>>>>
>>>>>>>
>>>>>>> I had initially discarded the idea of using this project because it
>>>>>>> required a plugin and the information of the plugin was outdated on
>>>>>>> squeaksource. However, having evaluated superficially the complexity of
>>>>>>> doing it with nativeboost (because too many external c struct involved 
>>>>>>> in
>>>>>>> the call), I would like to see if I am better off using this wrapper.
>>>>>>>
>>>>>>> I loaded it with:
>>>>>>>
>>>>>>> Gofer it
>>>>>>>   url: 'http://www.smalltalkhub.com/mc/hernan/ProcessWrapper/main';
>>>>>>>   package: 'ProcessWrapper-Core';
>>>>>>>   package: 'ProcessWrapper-Plugin';
>>>>>>>   package: 'ProcessWrapper-Tests';
>>>>>>>   load.
>>>>>>>
>>>>>>> But the plugins wont load because it requires the
>>>>>>> class SmartSyntaxInterpreterPlugin and apparently this file is a part of
>>>>>>> the VMMaker. Is there any recent config for VMMaker in Pharo because 
>>>>>>> this
>>>>>>> one looks outdated:
>>>>>>>
>>>>>>> http://pharo.gemtalksystems.com/book/Virtual-Machine/Building/VMMakerTool/
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Pierce
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to