2009-06-30 19 views
21

Ich habe eine DLL von C++ und ich möchte es in C# debuggen, aber ich weiß nicht wie.Debug C++ DLL in C#

Als ich das C++ - Projekt kompilierte, bat mich Visual Studio, eine ".exe" auszuführen.

Ich vermutete, dass ich ein Projekt erstellen musste, um die DLL auszuführen.

Aber ich bin verloren, wie könnte ich es debuggen?

Antwort

3

Visual Studio kann eine DLL nicht eigenständig ausführen.

Sie müssen die Startup-EXE festlegen, die Ihre C++ - DLL in den Eigenschaften Ihres DLL-Projekts verwendet. Sie können dies von Eigenschaften -> Debugging -> Befehl unter Angabe der Pfad der ausführbaren Datei, die Ihre DLL aufrufen und alle Befehlszeilenargument benötigt.

28

Wenn ich Sie richtig verstehe, möchten Sie eine C++ - codierte DLL debuggen, die Sie in einem C# -Projekt erstellt haben, das die DLL aufruft, die Sie auch erstellt haben?

Ich habe dies bereits getan, indem Sie in Ihre C# -Projekteigenschaften und im Abschnitt Debugging das Kontrollkästchen "Enable unmanaged code debugging" aktiviert haben. Dies sollte Ihnen erlauben, in Ihre C++ DLL einzusteigen.

+3

auch in Visual Studio 2012 fand ich die Option, um 'Enable native code debugging' zu aktivieren – ComethTheNerd

14

Um ein C++ von C# debuggen gibt es ein paar Dinge, die Sie tun müssen.

  1. Fügen Sie Ihrer Lösung für Ihre Debug-Anwendung ein C# -Projekt hinzu.
  2. Bearbeiten Sie die Eigenschaften des C# -Projekts auf der Registerkarte "Debuggen" der Projekteigenschaften auf "Debuggen nicht verwalteten Codes zulassen".
  3. Legen Sie das C++ - Projekt als eine Abhängigkeit des C# -Projekts fest.
  4. Schreiben Sie in Ihrem C# -Projekt Code, um die DLL entweder mit P/Invoke oder COM zu verwenden.
  5. Legen Sie einige Haltepunkte in Ihrem C++ - Code fest und führen Sie das C# -Projekt aus.
+0

Punkt 2 hat es für mich getan! Nun, ich nie... – Ian

0

SOS (Sohn Streik) Debugging Extension (SOS.dll) hilft Ihnen verwaltetem Code in Visual Studio debuggen, indem Informationen über die interne CLR-Umgebung

beziehen sich die folgenden Artikel bereitstellt : -

MSDN ARTICLE