Soweit ich das erkennen kann, dient dieser quellcode dazu, um die datei "an21xx.DLL" dynamisch (LoadLibrary/FreeLibrary/GetProcAddress) zu verwenden
int OpenDevice(BYTE DevNumber, char* DriverName, char* ID, char* KeyWord);
int SetInterrupt (BYTE DevNumber,BYTE IntNum,BYTE STATE);
int SetRefreshTime (long RefreshTime);
etc.
Zusätzlich ist noch eine stringübersetzung zwischen pascal und C für die parameterübergabe eingebaut (ConvertStringToPascalDLL/PascalString) die verwendung ist aber rätselhaft (strdup/free, new[]/delete[] ohne das voranstellen der länge o.ä. hätte es auch getan).
Die klasse CUSB_InterfaceApp dient dem "loadtime"-anbinden von "an21xx.dll" im konstruktor von "theApp". Eine freigabe im destruktor scheint aber zu fehlen und ein misserfolg kommt wohl auch nicht in frage (feedback nur visuell durch AfxMessageBox, was durch eine vorhandene variante ersetzt werden müsste).
Alle dies funktionen kann man auch direkt in seinem projekt unterbringen (u.a. durch weglassen von "__declspec(dllexport) __stdcall"), dafür eine extra mini-DLL zu erzeugen ist etwas merkwürdig.
Mit diesem link (unter "msvcrt.lib missing" einfach msvcrt durch AN21xx ersetzen) lässt sich aus der AN21xx.dll die fehlende datei AN21xx.lib (sowie *.exp) erzeugen. Ähnliches sollte auch für "Borland C++ Builder" möglich sein. Dann ist dieser wrapper (USB_Interface.cpp) nicht mehr nötig.
Hier steht z.b. beschrieben, wie man mit "dem Borland-Tool IMPLIB" eine passende import-lib für borland aus der vcc-import-lib (herstellung oben beschrieben, selbst probiert, scheint zu gehen) erzeugt.
mr.escape