1

C# から DIA SDK を使用して .pdb を検査しようとしていますが、次のコードを使用してユーザー定義型を取得できません。

string pdbFileName = @"c:\test.pdb";
var sourceClass = new DiaSourceClass();
sourceClass.loadDataFromPdb(pdbFileName);
IDiaSession session;
sourceClass.openSession(out session);    

IDiaEnumSymbols symbols;
session.globalScope.findChildren(SymTagEnum.SymTagUDT, null, 0, out symbols);

C# プロジェクトから dia2.tlb または dia2.dll を参照すると、異なる結果が得られます。

dia2.tlb を参照すると、関数呼び出しは正常に完了しますが、シンボルが返されません。これは私も渡しSymTagEnum.SymTagPublicSymbolfindChildrenも同じです。

dia2.dll を参照すると、関数はNotImplementedException代わりに a をスローします。この場合、 に渡すSymTagPublicSymbolfindChildrenシンボルが返されます。

誰かがこれに遭遇しましたか?NotImplementedException.dll を参照することは正しいと思いますが、スローされる理由がわかりません。

IDL/DLL

VS コマンド プロンプトでコマンドを使用してdia2.tlbとを作成しました。dia2.dll

cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional

midl /I "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\DIA SDK\idl";"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\DIA SDK\include" dia2.idl /tlb dia2.tlb

tlbimp dia2.tlb

どうもありがとう。

4

0 に答える 0