Idiadatasource Loaddataforexe


Im, das mit dem DIA SDK begonnen wird und den folgenden einfachen Code haben: Wenn ich dieses von der Visual Studio-IDE beginne, scheitert es mit EPDBNOTFOUND, selbst wenn ich es ohne Debugging anfange. Aber wenn ich das gleiche Programm außerhalb der IDE es funktioniert gut und kehrt SOK. Zuerst dachte ich, seine eine funktionierende Verzeichnis Frage, so dass ich printf am Anfang zu sehen, ob das ist das Problem, aber es ist nicht das Problem. Das Arbeitsverzeichnis ist das gleiche und PDB ist da. Tut Visual Studio etwas, das das Verhalten der DIA-SDKs beeinflusst Ich sehe nichts in der Dokumentation. Die ich mit dem Debug-Interface-Access-SDK in C. Ich kann sagen, die msdia80.dll hat eine COM-Schnittstelle, so dass ich die DLL registriert (mit regsvr32) und voila Es kann direkt in seinem C-Projekt referenziert werden. Der Aufruf hes interessiert ist, ist IDiaDataSource :: loadDataForExe (). Der dritte Parameter ist ein Objekt, das gemäß der Dokumentation die IDiaLoadCallback-, IDiaLoadCallback2-, IDiaReadExeAtOffsetCallback - oder IDiaReadExeAtRVACallback-Schnittstelle implementieren muss. Diese Schnittstellen sind jedoch nicht in der Dia2Lib-Referenz verfügbar. So nah, wie ich sagen kann, ist jede andere Schnittstelle, die in dia2.h definiert ist, mit Ausnahme der, die von loadDataForExe () benötigt wird, definiert. Wie kann ich eine Schnittstelle implementieren, die ich kippe, referenzieren Ive sogar versuchte, eine nicht verwaltete C-Klasse zu verursachen, die das IDiaLoadCallback interface implementiert, es in eine verwaltete C-Klasse wickelte und eine Klassenbibliothek schuf, die ich in meinem C-Projekt aufrufe. Allerdings, wenn ich versuche, rufen Sie meine verwaltete Klasse, wird eine Ausnahme von einer fehlenden Assembly geworfen. Ich kann nicht sehen, warum ich es auf diese Weise sowieso tun müsste, aber es war einen Versuch wert. Jede helfende Hinweise wäre sehr dankbar, danke. Thursday, April 12, 2007 9:18 PM Diese Schnittstellen sind C-Clients ausgesetzt. Zum Beispiel, IDiaLoadCallback2 Sie sollten in der Lage sein, eine Interop-Assembly aus dem Typelib (dont wissen, ob es eine typelib oder nicht) zu generieren, oder im schlimmsten Fall, nur imitieren die C-Schnittstelle in C, während die Anwendung der entsprechenden Guidelines. Objekt, uuid (AAAAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA), pointerdefault (eindeutige) Schnittstelle IMyInterface. IUnknown HRESULT Foo () wird das folgende in C Guid (aAAAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAAquot), InterfaceType (ComInterfaceType. InterfaceIsIUnknown) öffentliche Schnittstelle IMyInterface Heres ein msdn Artikel, der über die Generierung von C-Schnittstellen von idl: Im versuchen, einige zu schreiben C-Code, der das DIA (Debug Interface Access) SDK verwendet, um eine PDB-Datei abzufragen. Ich verwendete die Batch-Datei, die in dieser Frage beschrieben wird, um eine Wrapper-Assembly um die DIA-Typbibliothek zu erstellen. Nun konnte ich Instanzen der verschiedenen COM-Klassen, die durch das SDK ausgesetzt sind zu erstellen. Allerdings gab es ein Problem. Die IDiaDataSource :: loadDataForExe-Methode erfordert ein Rückrufobjekt, das eine der folgenden Schnittstellen implementiert: IDiaLoadCallback IDiaLoadCallback2 IDiaReadExeAtOffsetCallback IDiaReadExeAtRVACallback Alle diese Schnittstellen sind im IDL definiert, sind jedoch nicht in der generierten Assembly verfügbar. Bin ich etwas fehlt oder ist der einzige Weg, um diese Schnittstellen in C zu implementieren ist es zunächst manuell deklarieren sie mit den verschiedenen COM-AttributenIm Erste Schritte mit dem DIA SDK und haben den folgenden einfachen Code: Wenn ich dies aus der Visual Studio IDE starten, Es assert schlägt mit EPDBNOTFOUND, auch wenn ich es ohne Debugging starten. Aber wenn ich das gleiche Programm außerhalb der IDE es funktioniert gut und kehrt SOK. Zuerst dachte ich, seine eine funktionierende Verzeichnis Frage, so dass ich printf am Anfang zu sehen, ob das ist das Problem, aber es ist nicht das Problem. Das Arbeitsverzeichnis ist das gleiche und PDB ist da. Tut Visual Studio etwas, das das Verhalten der DIA-SDKs beeinflusst Ich sehe nichts in der Dokumentation. Gefragt 13. Februar um 14:31 Uhr

Comments