DIA SDK引发NotImplementedException

时间:2018-12-04 11:55:59

标签: c# visual-c++ debug-symbols pdb-files dia-sdk

我正在尝试使用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.SymTagPublicSymbol传递给findChildren,也是如此。

如果我引用dia2.dll,则该函数将引发NotImplementedException。在这种情况下,将SymTagPublicSymbol传递到findChildren会返回符号。

有人遇到过这个吗?我认为引用.dll是正确的,但是我不知道为什么会抛出NotImplementedException

IDL / DLL

我使用VS命令提示符中的命令创建了dia2.tlbdia2.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

非常感谢。

0 个答案:

没有答案