我偶然发现了一个为Microsoft自己的非托管DLL生成P / Invoke签名的工具:PInvoke Interop Assistant
是否有类似的工具会为第三方非托管DLL生成P / Invoke签名?
或者,任何方式将第三方DLL提供给PInvoke Interop Assistant
编辑:Actual issue我正在尝试解决
答案 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的代码。请注意,由于某种原因,错误不会出现在“错误”面板中,而是显示在生成代码顶部的注释中。
正如一些人已经说过的那样,生成的代码应该用作指南 - 您可能需要进行更改以获得您想要的内容。
答案 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签名