Hi Przemek,


    ! Fixed GetProcAddress() passed ordinals to always be
      WORDs casted to DWORD.
    ! Fixed a few possible buffer overruns.
    * Cleanup, format, etc.
    ; Compile with HB_NO_ASM if you use BCC55 and don't have
      TASM32 (or upgrade to free BCC58 which contains TASM32).

Please note that this code is ABI dependent. In WIN64 pointer size
has 64bit and it uses different ABI so this code will not work.
Now it has to be disabled for such builds. But for WIN64 it should be
possible to easy eliminate asm code. 1-st 10 parameters are passed
in registers (AFAIR RAX, RCX, RX1, ..., RX8) so simple casting of
function pointer to some function with 10 _INT64 parameters and
passing this parameters or 0 for unused should be enough to execute
any function.
It's even possible to eliminate .asm code also for 32bit platform
using similar dirty hack with casting but it will have to be more
complicated.

I thought you'll know the solutions to these problems :)

It's too much for me though, especially since I couldn't
even try these as they are now. Maybe I broke it, but
the original code didn't work for me the same way either.
Not having any test code doesn't help either.

I've added it in hope that it ignites some interest (and
to help porting 3rd party stuff), and that it will get
properly fixed eventually. If it's you, even better.

I added C structures ported from xharbour to XHB library so maybe
you can enable them optionally.

It would create cross dependency which I wanted (and
want) to avoid.

In any case, if someone needs "c struct" support, it's
enought to use CFLAGS=-D__XHARBOUR__ for hbw32. Not tested,
but the code is there, intact.

Brgds,
Viktor

_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to