USB-Gerät an Steueren
-
Hallo,
ich benutze VisualStudio 2008(da kenn ich mich leider noch nicht aus). Dort habe ich ein neues C++ Projekt erstellt. Jetzt möchte ich mit einer Klasse Controller einen kleinen Messtisch ansteuern(der ist per USB mit dem Computer verbunden). Die Treiber für den Tisch habe ich bereits installiert. Auf der CD des Tisches habe ich noch einige DLLs eine MSCControll.lib und eine MSCControll.h gefunden. In der MSCControll.h sind massig #defines und die Funktionsdeklarationen wie z.b.
MCSCONTROL_API
SA_STATUS SA_GetDLLVersion(unsigned int *version);Ich möchte ein Objekt der Klasse Controller erstell über das ich die wichtigsten Funktionen des Messtisches(die in der MSCControll.h sind) benutzen kann. Wie mach ich jetzt weiter, ich kann ja kein Objekt MSCControll erstellen da in der .h keine Objekt definiert ist sondern nur die Methoden?
besten Dank schon mal für eure Antworten.
Stefan
-
In der DLL wird keine Klasse zu finden sein - die musst du selber schreiben und damit die Funktionen der DLL kapseln. Du baust dir sozusagen einen Wrapper um die DLL-Funktionen um deine Anwendung von der speziellen Implementierung des USB-Controllers zu trennen.
-
Das ist schon klar dass ich die selbst schreiben muss. die frage ist nur wie soll das ausschaun.
sagen wir mal meine TabelController Klasse soll die methode
void TischLinks(int laenge)haben. in dieser Methode will ich dann die funktion
void tabelLeft(int laenge)
der msscontroller.h aufrufen. oder brauch ich die .lib und die .h des msccontrollers garnicht sondern nur die dlls? und wo muss ich was in meiner projektmappe reinschieben/importieren/hinzufuegen?danke für deine hilfe.
stefan
-
Doch, du brauchst .lib und .h
Die Header-Datei sagt dem Compiler was es gibt, die lib dem Linker wo er das Zeug findet.
Also lib+h ins Projektverzeichnis, beim Projekt dann "Vorhandenes Element hinzufügen" und beide auswählen. Die DLL ins Verzeichnis mit der Exe, also ./Debug und ./Release.Allerdings würde ich die Funktionen nicht 1:1 weitergeben. Deine Klasse sollte Sachen wie Verbindungseinstellungen, IDs und spezielle (oder fixe) Parameter gar nicht nach aussen zeigen.
-
wenn ich die .lib hinzufügen möchte frägt er mich
es wurden keine Benutzerdefinieren ....
da brauch ich keine extra definierten build regeln, oder?
./Release find ich nicht in den ordnern meines projekts aber einen debug da hab ich die dlls mal reingeschmissen.die .h und die .lib musste ich außerdem noch per hand in mein projekt verzeichnis kopieren. jetzt kompiliert er schon mal jetz muss ich morgen noch ausprobieren obs auch wirklich mit dem teil funktioniert. falls ich noch fragen hab werde ich nochmal schreiben.
besten dank nochmal
stefan
-
open-grave@web.de schrieb:
wenn ich die .lib hinzufügen möchte frägt er mich
es wurden keine Benutzerdefinieren ....
da brauch ich keine extra definierten build regeln, oder?
./Release find ich nicht in den ordnern meines projekts aber einen debug da hab ich die dlls mal reingeschmissen.die .h und die .lib musste ich außerdem noch per hand in mein projekt verzeichnis kopieren. jetzt kompiliert er schon mal jetz muss ich morgen noch ausprobieren obs auch wirklich mit dem teil funktioniert. falls ich noch fragen hab werde ich nochmal schreiben.
besten dank nochmal
stefan
Das Release-Verzeichnis wirste auch nicht finden, solange du noch keinen Release-Build gemacht hast. Es ist aber ratsam, daran zu denken, da sonst das Erstellen des Release-Projektes so nicht funktionieren würde (getrennte Einstellungen für Debug/Release). Was ich aber mit der DLL nicht ganz verstehe: diese dürfte doch mit der Treiberinstallation schon irgendwo im System zu finden sein (vorzugsweise im Systemverzeichnis des Betriebssystems (z.B. System32) oder im Programmverzeichnis des Programmes zum Messtisch, sofern es da eins gibt).
Damit brauchst du nur noch die lib und die h. Was die machen hat mein Vorposter schon gesagt. Die Lib kannste entweder per Projekteinstellungen (hier wieder getrennt für Debug und Release) einbinden oder mit #pragma ....