Hallo, ich bin gerade ein wenig am verzweifeln und ich hoffe Ihr könnt mir helfen. Ich mach mir nämlich ein USB-Device, dass ich dann per DLL steuern möchte. Dabei hab ich die Funktionen des USB-Device über C# überprüft. Was benutzt wird: mpusbapi.dll , mpusbapi.lib, _mpusbapi.h, Visual Studio 2008, eigenes entwickeltes USB Device, c++, c# Was funktioniert: Bei C# funktioniert die Kommunikation über die mpusbapi.dll mit dem USB-Device ohne Probleme. Bei C++ zur Erstellung kann ich eigene DLLs schreiben und auch von einer Applikation aus aufrufen. Was nicht funktioniert bzw. was es zu lösen gilt: Ansprechen der mpusbapi.dll über C++ Was ich bei C++ unternommen habe: Bis jetzt wollte ich nur die Funktion MPUSBGetDeviceCount zum laufen bringen. Dabei habe ich den Header von _mpusbapi.h includiert, unter den Projekt Eigenschaften -> Konfigurationseigenschaften -> Eingabe -> Zusätzliche Abhängigkeiten -> mpusbapi.lib hinzugefügt. Fehlermeldung: fatal error LNK1136 Ungültige oder beschädigte Datei. Und das kann ja eigentlich nicht sein, da ich die DLL auch unter C# benutzt habe und es keine Probleme gab. Vielleicht liegt es an irgendeiner Einstellung die ich noch nicht beachtet habe und komme nicht drauf. Ich hoffe mir kann einer helfen und mir einen kleinen Schubs geben. Danke schon im Voraus
Tobi schrieb: > Und das kann ja > eigentlich nicht sein, da ich die DLL auch unter C# benutzt habe und es > keine Probleme gab. dann ist ist eine c# dll und keine lib. Beides haben zwar die endung .dll aber es sind verschiende arten von Dateien. öffne mal die dll mit "depends" und schau was dort für symbole exportiert sind.
Tobi schrieb: > Fehlermeldung: > fatal error LNK1136 Ungültige oder beschädigte Datei. Und das kann ja > eigentlich nicht sein, da ich die DLL auch unter C# benutzt habe Natürlich kann das sein. Das .Net-Geraffel benutzt keine Importlibraries, der C++-Compiler aber sehr wohl, wenn man sie ihm vorwirft. Die *.lib-Datei ist das Problem, die wird mit einem nicht kompatiblen Compiler erzeugt worden sein. Was Du jetzt machen kannst, ist die DLL dynamisch einzubinden, also per LoadLibrary zu laden und per GetProcAddress Funktionspointer auf die darin befindlichen für Dich interessanten Funktionen setzen.
Danke für die schnelle Antwort. Dependency Walker sagt, dass es C- Funktionen sind.
Danke Rufus, werde ich probieren und melde mich dann nochmal
Danke Rufus, das war der Weg zum Erfolg. Ich hab mir mal schnell die Pipes zum USB-Device geöffnet und mir die Handles über meine eigene DLL ausgeben lassen und siehe da es funktioniert. Mit freundlichen Grüßen Tobi
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.