IO-Warrior
-
Hallo Gemeinde,
ich versuche gerade eine USB IO-Warrior anzusprechen. Mit folgendem Code greife ich auf die API (iowkit.dll) zu:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // Schritt 1: DLL dynamisch laden (ohne die LIB im Projekt hinzuzufügen) _hWarriorDLL = LoadLibrary("iowkit.dll"); if( _hWarriorDLL == NULL ) ::MessageBox(NULL,"Fehler beim Laden der iowkit.dll","FEHLER",MB_ICONSTOP); }
im Header:
private: // Anwender-Deklarationen HMODULE _hWarriorDLL;
laut Beschreibung müßte ich so das Device öffnen können;
void __fastcall TForm1::Button1Click(TObject *Sender) { IOWKIT_HANDLE ioHandle; ioHandle = IowKitOpenDevice(); if (ioHandle != NULL) { Label1->Caption="Device open"; } else { Label1->Caption="could not open Device"; } }
und bekomme beim compilieren folgende Fehlermeldung:
[Linker Fehler] Unresolved external 'IowKitOpenDevice' referenced from D:\PROJEKTE\IO_WARRIOR\PROJEKT\UNIT1.OBJWenn ich versuche die .lib dem Projekt hinzuzufügen bekomme ich:
[Linker Fehler] 'D:\AKTUELLE PROJEKTE\IO_WARRIOR\PROJEKT\IOWKIT.LIB' contains invalid OMF record, type 0x21 (possibly COFF)Die Beschreibung der Api ist hier:
http://www.codemercs.com/uploads/tx_sbdownloader/IowKit_V15_API.pdfIch hoffe hier Hilfe zu bekommen, danke schon mal.
Gruß Thomas
-
Wenn du die DLL dynamisch lädst, dann mußt du auch die Funktionen dynamisch ansprechen (mittels GetProcAddress).
Ansonsten könntest du auch versuchen, die ".lib"-Datei für den C++ Builder zu konvertieren (coff2omf.exe).
-
Th69 schrieb:
Ansonsten könntest du auch versuchen, die ".lib"-Datei für den C++ Builder zu konvertieren (coff2omf.exe).
Bessere Erfolgschancen hast du, wenn du einfach mittels
IMPLIB
eine OMF-Importbibliothek für die DLL erstellst.
-
Hallo und danke für die Antworten
War das WE weg, daher meine späte Reaktion.
Ich habe jetzt genau die Lösung von Audacia angewendet und mir eine lib gemacht.
Damit funktioniert die Sache soweit gut.