Я пытаюсь проверить .pdb, используя DIA SDK из C #, но я не могу получить пользовательские типы, используя этот код:
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);
Я получаю разные результаты, если ссылаюсь на dia2.tlb или dia2.dll из моего C # проекта.
Если я ссылаюсь на dia2.tlb, вызов функции завершается успешно, но я не получаю символы обратно.Это то же самое, если я передаю SymTagEnum.SymTagPublicSymbol
findChildren
.
Если я ссылаюсь на dia2.dll, функция выдает NotImplementedException
.В этом случае передача SymTagPublicSymbol
в findChildren
возвращает символы.
Кто-нибудь сталкивался с этим?Я думаю, что ссылка на .dll является правильной, но я не знаю, почему я получаю NotImplementedException
.
IDL / DLL
Я создал dia2.tlb
и dia2.dll
, используяКоманды в командной строке VS:
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
Большое спасибо.