So erstellen Sie eine DLL, die in C # verwendet wird

9

Ich habe ICOP VDX-6354 Board mit Win CE. Ich versuche, den Summer des Boards von meinem C # -Programm aus zu steuern. Ich habe versucht, alle Playsound usw. "coredll.dll" Plattform aufruft. keiner von ihnen hat bisher funktioniert. Meine letzte Chance besteht also darin, meine eigene DLL zu erstellen.

%Vor%

Der obige Code ist im Datenblatt des Boards verfügbar. Ich möchte es als DLL kompilieren und dann in meinem C # -Programm wie

aufrufen %Vor%

Ich habe beim Kompilieren ein Präfix wie folgt verwendet:

%Vor%

Damit könnte ich hoffentlich den Summer steuern. Mein Problem ist, dass ich es nicht erfolgreich kompilieren konnte. Ich folgte den Schritten hier , aber es half mir nicht.

Was soll ich Schritt für Schritt machen?

BEARBEITEN:

Ich denke, ich habe die DLL gebaut. Ich habe einen anderen Weg versucht, die DLL zu erstellen hier gefunden .

Nun habe ich die DLL in den Debug-Ordner meines C # Startprojekts kopiert (andere DLLs des Projekts befinden sich ebenfalls in diesem Ordner). Dann versuche ich die MyBeep-Funktion von MyBeep.DLL in meinem C # -Projekt aufzurufen:

%Vor%

Aber es gibt die folgende Ausnahme.

  

Die PInvoke-DLL 'MyBeep.dll' kann nicht gefunden werden.

Vermisse ich etwas? Bitte überprüfen Sie die oben angegebenen Links, die ich betrogen habe, um die DLL zu erstellen, um zu verstehen, was ich bisher getan habe. Grüße.

    
Oğuz Sezer 27.10.2011, 14:53
quelle

2 Antworten

0

Auch wenn die Fehlermeldung etwas anderes vermuten lässt, sollten Sie den Namen der exportierten Funktion überprüfen. Für Win32 verwende ich immer dieses Tool . Für eine CE-DLL funktioniert DUMPBIN / EXPORTS .

Der Functon-Name wird wahrscheinlich __MyBeep heißen: Ich glaube, dass dieses Präfix eine C-Konvention ist.

    
user180326 22.01.2012, 21:02
quelle
1

Es gibt zwei Probleme, die Sie haben:

  1. Sie müssen die DLL erstellen, nicht versuchen und debuggen. Wenn es sich im selben Projekt wie Ihr C # -Projekt befindet, legen Sie das C # -Projekt als Startprojekt fest (klicken Sie mit der rechten Maustaste auf die Projektdatei), andernfalls müssen Sie nur Build auswählen und nicht Debuggen starten (wenn Sie eine Verknüpfung verwenden) Schlüssel dies wird wahrscheinlich Strg + Umschalt + B [bei Verwendung der C # Umgebung Setup] oder F7 [wenn Sie die C ++ Umgebung Setup verwenden]).

  2. Sie müssen die DLL an der richtigen Stelle haben. Wenn Sie dies automatisieren möchten, fügen Sie einfach einen Post-Build-Schritt zum C ++ - Projekt hinzu (Projekteigenschaften, Build-Aktionen, wenn ich mich richtig erinnere, und Post-Build), die etwas wie copy "$(TargetPath)" "$(SolutionDir)\CsProj\bin$(ConfigurationName)\*.*"

  3. tun

Einige dieser Makros sind vielleicht etwas daneben, aber Sie sollten die allgemeine Idee verstehen.

EDIT: Sie müssen auch sicherstellen, dass Ihr C ++ - Projekt vor Ihrem C # -Projekt erstellt wird. Klicken Sie mit der rechten Maustaste auf Ihre C # -Projektdatei und wechseln Sie zu Projektabhängigkeiten. Aktivieren Sie dann die C ++ - Bibliothek im Feld Abhängig von. Um sicherzustellen, dass Ihr Post-Build-Schritt funktioniert, versuchen Sie einfach, das C ++ - Projekt selbst zu erstellen, und überprüfen Sie, ob es die DLL in das richtige Verzeichnis in Ihrem C # -Projekt kopiert. Wenn nicht, werden Fehler im Ausgabefenster angezeigt. Wenn Sie diesem Tutorial gefolgt sind, um eine DLL zu erstellen, sollten Sie in Ordnung sein.

    
blaaaaaaah 28.10.2011 10:57
quelle