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

Gre*_*egC 34 .net c# pinvoke unmanaged function-signature

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

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

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

编辑:我试图解决的实际问题

Ben*_*igt 45

谷歌迅速找到了http://www.pinvoker.com/(兼容性列为VS2005,2008和2010;它似乎没有更新到新版本)

Microsoft的C++/CLI编译器也可以这样做,如果您使用/clr:safe#include头文件,它将生成p/invoke代码,您可以使用例如ILSpy(免费)或Red Gate Reflector(以前是免费的)提取.

  • @GregC:我很感激.这是向我投降的人我想要一些解释. (2认同)
  • 我猜这些downvotes与引用它是通过谷歌发现有关.当然,它可能不会给答案的价值增加任何东西,但答案本身非常有用,所以我个人选择upvote代替. (2认同)

par*_*y72 14

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

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

在此输入图像描述

  • @GNZ GitHub 链接有效。 (2认同)

V.B*_*.B. 9

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


Fra*_*eto 5

另一种选择是SharpGenTools。SharpDX 使用它来“自动”创建 directx api 的绑定。还有CppSharp,QtSharp 使用它来生成到本机 C++/C 库的绑定。到目前为止,CppSharp 仅与 .Net Framework 6+ 兼容。