Tworzenie pliku DLL (źródło C) dla PowerBuilder 9.0

0

Utworzyłem sobie dla przykładu prosty kod w C:

#include <stdio.h>
int test1(int param);
int test1(int param)
{
return param;
}

Później tworzę plik DLL w ten sposób:

gcc -c mydll.c
gcc -shared -o mydll.dll mydll.o

Wrzucam go do projektu PB, ale dostaję błąd.

W PB:

  1. Utworzyłem funkcję (Local External Function):
    FUNCTION Integer test1(integer param) LIBRARY "mydll.dll"

  2. I w kodzie:

integer xx, yy
yy = 2
xx = test1(yy)
MessageBox("test", String(xx))

Dostaję błąd, jak w linku http://pokazywarka.pl/st7i1h/. Bez przekazywania parametrów działa.
Jak więc przekazywać poprawnie parametry?

0

Nie znam się na PowerBuilderze, ale wygląda mi to na niezgodną konwencję wywołania funkcji.
Spróbuj dodać jakieś __stdcall do funkcji.

0

Próbowałem tak:

#include <stdio.h>
int __stdcall test1(int param);
int __stdcall test1(int param)
{
return param;
} 

Ten sam błąd.

0

Z __stdcall'em i extern inny błąd: http://pokazywarka.pl/uq0t42/

#include <stdio.h>

extern int __stdcall desr(int param);

extern int __stdcall desr(int param)
{
return param;
} 
0

Spróbuj zadeklarować tego inta w builderze jako 16bitowego.
Zrób test z tą pierwszą wersją.

1 użytkowników online, w tym zalogowanych: 0, gości: 1