Ich versuche, das Microsoft Debug Interface Access SDK zu verwenden von C #. Dies wird mit Visual Studio installiert, aber die Dokumente scheinen nicht zu erwähnen, wie Sie dies aus C # verwenden.
Ich habe Beispielcode für interweb gefunden, aber keine Informationen zur Verknüpfung mit dem DIA SDK. I.e. Ich kann es nicht als Assembly importieren. Ich glaube nicht, dass ich es in eine gemanagte C ++ - Anwendung einbinden muss, und benutze es als COM (das wäre die Hölle).
Es gibt eine IDL-Datei, ist das der richtige Weg? Wenn das so ist, wie?
Bearbeiten: Im Folgenden wird die Typbibliothek zur Verwendung als referenzierte Assembly erstellt. Einfügen in eine Batch-Datei.
%Vor%Sie müssen die IDL zuerst in eine typelib konvertieren:
Etwas wie:
%Vor%Dann können Sie die TLB importieren.
Ich habe das DIA SDK auf diese Weise nie benutzt, also weiß nicht, wie freundlich es wäre. Sie könnten auch in Erwägung ziehen, es direkt von einer verwalteten C ++ - Assembly aus zu verwenden und eine verwaltete Schnittstelle für die benötigte Funktionalität bereitzustellen.
Die vorherigen Anweisungen funktionierten, benötigten jedoch einige Aktualisierungen. VSINSTALLDIR existiert nicht mehr (und ist mehrdeutig, wenn mehrere VS-Versionen installiert sind). Daher habe ich die Anweisungen verallgemeinert und korrigiert. Hier ist eine VS 2015 Version:
%Vor%Ändern Sie VS140 so, dass sie der Version entspricht, die Sie verwenden möchten.
Dies erstellt dia2lib.dll, die ich als Referenz hinzugefügt habe - Rechtsklick auf Verweise, Verweis hinzufügen, Durchsuchen, finde die Datei. Es funktioniert und ich kann jetzt Symbolsort erstellen und ausführen.
Falls jemand Probleme mit dem Pfad hat, hier ist, was für mich für VS 2017 funktionierte.
Öffnen Sie die x86_x64 Cross Tools-Eingabeaufforderung (von Start / Programme / Visual Studio 2017 im Administratormodus )
cd C:\Program Files (x86)\Microsoft Visual Studio17\Professional
midl /I "C:\Program Files (x86)\Microsoft Visual Studio17\Professional\DIA SDK\idl";"C:\Program Files (x86)\Microsoft Visual Studio17\Professional\DIA SDK\include" dia2.idl /tlb dia2.tlb
tlbimp dia2.tlb
Das Dia2Lib.dll
befindet sich jetzt im Ordner C:\Program Files (x86)\Microsoft Visual Studio17\Professional
.
Ich benutze es in C # code ich habe nicht registrierte dll Ausnahme! Ich musste laufen
C:\Program Files (x86)\Microsoft Visual Studio17\Professional\DIA SDK\bin>regsvr32 msdia140.dll
um das Problem zu lösen