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

问题描述 投票:32回答:6

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

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

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

编辑:Actual issue我想解决

c# .net pinvoke unmanaged function-signature
6个回答
44
投票

Google很快发现qazxsw poi(兼容性列为VS2005,2008和2010;它似乎没有更新以适应更新的版本)

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


14
投票

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

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


9
投票

这个项目很活跃,看起来很有希望完成这项任务:question of mine


3
投票

您可以使用https://github.com/mono/CppSharp为任何本机DLL创建C#包装器,包括C风格的DLL导出函数和C ++ DLL导出类。它可用于免费评估,但有一些限制。

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


3
投票

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


-3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.