Schreiben Sie einen Ersatz für eine C -DLL?
Frage
Ich möchte einen sehr einfachen Ersatz für W3BTRV7.dll schreiben, damit ich Btrieve -API -Anrufe an eine andere Bibliothek weitergeben kann (geschrieben in .NET und über COM genannt). Grundsätzlich muss ich die Signatur der Btrcall -Funktion in C nachahmen, aber ich bin überhaupt kein C -Programmierer ... überhaupt. Ich denke, ich habe eine ziemlich gute Vorstellung davon, wie man eine DLL schreibt, die exportiert, aber darüber hinaus bin ich verloren.
Die grundlegende Signatur sieht folgt aus:
int BTRCALL(Operation Code, Position Block, Data Buffer, Data Buffer Length,
Key Buffer, Key Buffer Length, Key Number)
Betriebscode - Ganzzahl
Positionsblock - 128 Byte -Array
Datenpuffer - Ich kann nicht viele Details dazu finden, aber ich gehe davon aus, dass es sich um ein Byte -Array handelt, dessen Länge durch den Parameter der Datenpufferlänge angegeben ist.
Datenpufferlänge - Auch nicht viele Informationen, aber ich gehe davon aus, dass dies eine Ganzzahl ist, die die Länge des vorherigen Byte -Arrays angibt.
Schlüsselpuffer - Ein Byte -Array mit einer maximalen Größe von 255 Bytes
Schlüsselpufferlänge - Die Länge des vorherigen Byte -Arrays
Schlüsselnummer - 2-Byte-Ganzzahl
Kann jemand eine Funktion in C vorschlagen, die dieser Signatur entspricht?
Lösung
#include <types.h>
int BTRCALL(int op_code, char pos_block[], char data_buf[], int data_buf_len, char key_buf[], int key_buf_len, int16_t key_num)
Sie benötigen die Typen.
Beachten Sie, wie die Arrays keine Größe angegeben haben. Deshalb müssen sich die Größen in einem separaten Parameter oder a priori (wie bei POS_BLOCK) befinden.