我是一位经验丰富的.Net程序员,但在我的生活中还没有编译过C/C++程序.现在我有这个C-dll,标题和文档(第三方,而不是来自Win API),我需要从中调用十种方法.
我在考虑使用Platform Invoke.我发现这三个工具可以为我创建代码:
可能
Pinvoker似乎与Interop助手和向导有一些不同的方法.Swig我刚刚检查时发现这个问题没有在这里提出.
这些工具的优缺点是什么?
鉴于我对C/C++知之甚少,对我来说生成P/Invoke代码的最佳=最简单,最安全的方法是什么?
请参阅http://dotnetperls.com/dllimport-interop了解互操作示例,并参阅这篇MSDN 文章了解更多信息。这方面的圣经是Adam Nathan 的 书。
基本上,您需要识别 DLL 中要调用的函数。这些需要用 extern 标记,以便外部世界可以访问它们。下一步可能会很棘手,那就是为该函数编写 DllImport。这需要在托管和非托管世界之间进行映射。您将需要弄清楚如何将 C dll 中的任何复杂数据结构封送到托管代码中。
您应该检查 DLL 是否有任何类型的 COM 接口。首先确保您确实需要使用 P/Invoke。
SWIG 最初用于包装 C/C++ 代码以供脚本语言使用。它根据接口描述生成 C# 代码(请参阅教程)。如果 P/Invoke 是一个选项,我不建议在 C# 中使用它。
归档时间: |
|
查看次数: |
14755 次 |
最近记录: |