如何使用C#的MS DIA SDK?
我正在尝试使用C#的Microsoft Debug Interface Access SDK 。 这是随Visual Studio一起安装的,但是文档似乎没有提到你如何在C#中使用它。
我在interweb上找到了示例代码,但没有关于如何链接到DIA SDK的信息。 即我无法将其作为assembly导入。 我不认为我必须将它包含在托管C ++应用程序中并将其用作COM(这将是地狱)。
有一个IDL文件,这是正确的方法吗? 如果是这样,怎么样?
编辑:以下将创建用作引用程序集的类型库。 粘贴到批处理文件中。
call "%VS80COMNTOOLS%\vsvars32.bat" midl /I "%VSINSTALLDIR%\DIA SDK\include" "%VSINSTALLDIR%\DIA SDK\idl\dia2.idl" /tlb dia2.tlb tlbimp dia2.tlb
您需要先将IDL转换为类型库:
就像是:
midl /I "%VSINSTALLDIR%\DIA SDK\include" dia2.idl /tlb dia2.tlb tlbimp dia2.tlb
然后你可以导入tlb。
我从未使用过这种方式的DIA SDK,所以不知道它会有多友好。 您还可以考虑直接从托管C ++程序集中使用它,并为您需要的function提供托管界面。
之前的说明有效,但需要进行一些更新。 VSINSTALLDIR不再存在(当你安装了多个VS版本时,它是不明确的)所以我概括并纠正了指令。 这是一个VS 2015版本:
"%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" amd64 set DIASDK=%VS140COMNTOOLS%..\..\DIA SDK midl /I "%DIASDK%\include" "%DIASDK%\idl\dia2.idl" /tlb dia2.tlb tlbimp dia2.tlb
更改VS140以匹配您尝试使用的任何版本。
这创建了我添加的dia2lib.dll作为参考 – 右键单击引用,添加引用,浏览,找到该文件。 它工作,我现在可以构建和运行符号。
如果有人对路径有疑问,这就是VS 2017对我有用的东西。
-
打开x86_x64交叉工具命令提示符(从管理员模式下的 start / programs / Visual Studio 2017开始)
-
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
Dia2Lib.dll
现在位于C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional
文件夹中。
在C#代码中使用它我得到了未注册的DLLexception! 我不得不跑
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\DIA SDK\bin>regsvr32 msdia140.dll
解决这个问题