是否有工具为任意非托管DLL生成P / Invoke签名?

时间:2011-06-12 01:52:04

标签: c# .net pinvoke unmanaged function-signature

我偶然发现了一个为Microsoft自己的非托管DLL生成P / Invoke签名的工具:PInvoke Interop Assistant

是否有类似的工具会为第三方非托管DLL生成P / Invoke签名?

或者,任何方式将第三方DLL提供给PInvoke Interop Assistant

编辑:Actual issue我正在尝试解决

6 个答案:

答案 0 :(得分:43)

Google很快发现http://www.pinvoker.com/(兼容性列为VS2005,2008和2010;它似乎没有更新以适应更新的版本)

Microsoft的C ++ / CLI编译器也可以执行此操作,如果您使用/clr:safe#include头文件,它将生成p / invoke代码,您可以使用例如ILSpy(免费)或Red Gate Reflector(以前是免费的)。

答案 1 :(得分:13)

我通过使用UI中标记为“SigImp Translate Snippet”的第三个选项卡将PInvoke Interop Assistant用于非托管DLL。只需将标题复制并粘贴到“Native Code Snippet”窗口,然后按Generate(或启用Auto Generate)。这里有一些来自question of mine的代码。请注意,由于某种原因,错误不会出现在“错误”面板中,而是显示在生成代码顶部的注释中。

正如一些人已经说过的那样,生成的代码应该用作指南 - 您可能需要进行更改以获得您想要的内容。

enter image description here

答案 2 :(得分:9)

这个项目是活跃的,看起来很有希望完成这项任务:https://github.com/mono/CppSharp

答案 3 :(得分:3)

您可以使用xInterop C++ .NET Bridge with .NET to Native C++ Bridge为任何本机DLL创建C#包装器,包括C风格的DLL导出函数和C ++ DLL导出类。它可用于免费评估,但有一些限制。

免责声明:我是xInterop C++ .NET Bridge的作者。

答案 4 :(得分:3)

另一种选择是SharpGenTools。 SharpDX使用它来“自动”创建directx api的绑定。

答案 5 :(得分:-3)

使用VS SDK附带的Dumpbin.exe, Dumpbin,您仍然需要从转储数据中手动编写pinvoke签名