Biblioteka dll języka c w Delphi

0

Witam!

Mam bibliotekę dynamiczną dll napisaną w języku c. Nie posiadam źródła ale wiem, że interfejs tej biblioteki zawiera m.in. cztery interesujące mnie funkcje:

RDAPI ULONG GetVersion();
RDAPI ULONG GetCount(ULONG *count);
RDAPI ULONG GetInfo(ULONG index,INFO ri);
RDAPI UCHAR
GetLastError(ULONG err);

Dodatkowe info:

typedef unsigned char UCHAR;
typedef unsigned long ULONG;

typedef struct INFO {
UCHAR man[32];
UCHAR des[64];
UCHAR ser[64];
} INFO;

Jak wywołać funkcje w programie pisanym w Delphi? Bardzo proszę o pomoc. Pozdrawiam!

0

Musisz dopasować typy przesłania argumentów, jeśli żaden nie jest podawany to znaczy że jest fastcall, tyle że bywa on różny dla różnych języków. Bodajże na angielskiej wiki jest tabelka z porównaniem calli różnych języków, ( a raczej calli MS, Borlanda i C/C++ ), popatrz i wybierz pasujący.

0
PTwr napisał(a)

jeśli żaden nie jest podawany to znaczy że jest fastcall

W Delphi (i tylko w nim) tak jest. C używa jako domyślnej konwencji wywołania cdecl... Ale tu akurat cholera wie, jaki deasygnat ma to RDAPI.
OT: Ten post nie istnieje (czterysta czwarty mój post) :D

0

Co do tego RDAPI to jest coś takiego:

#ifdef WIN32
#ifdef BUILD_INTERFACE
#define RDAPI __declspec(dllexport)
#else
#define RDAPI __declspec(dllimport)
#endif
#else
#define RDAPI
#endif

Może ktoś z was pokusi się o fragment kodu w Delphi jak wywołać te funkcje???

0

Poczytaj o imporcie DLLek w Delphi. Gdzieś na 4p o tym jest.

0

@manfred: Tylko Delphi ma fastcall? Jedno Goglnięcie i widzę że choćby GCC też ma fastcall =]

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