Friday 6 October 2017

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 Problem, 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 beeinflussen Ich sehe nichts in der Dokumentation. Dass 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 entsprechend 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, dass ich kippe Referenz Ive sogar versucht, eine nicht verwaltete C-Klasse, die implementiert die IDiaLoadCallback-Schnittstelle, wickelte es in einer verwalteten C-Klasse und erstellt eine Klassenbibliothek, die ich in meinem C-Projekt zugreifen. Allerdings, wenn ich versuche, rufen Sie meine verwaltete Klasse, eine Ausnahme wird aufgrund 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. Donnerstag, 12. April 2007 um 21:18 Uhr Diese Schnittstellen sind C-Clients ausgesetzt. Zum Beispiel, IDiaLoadCallback2 Sie sollten in der Lage, 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 (unique) Schnittstelle IMyInterface. IUnknown HRESULT Foo () wird die folgende in C Guid (quotAAAAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAAquot), Interface (ComInterfaceType. InterfaceIsIUnknown) öffentliche Schnittstelle IMyInterface Heres ein msdn Artikel, der zum Generieren von C-Schnittstellen von IDL spricht:

No comments:

Post a Comment