在 C# 中,调用第三方 API (C++)

Posted

技术标签:

【中文标题】在 C# 中,调用第三方 API (C++)【英文标题】:in C#, calling third party API (C++) 【发布时间】:2013-10-29 20:38:52 【问题描述】:

想知道是否有人会这么好心地为我指出如何在 C# 中调用第三方的 C++ DLL 的正确方向。 API 是封闭源代码,但头文件可用。 我已经阅读了有关使用 P/Invoke 的信息,但在进一步深入研究之后,它会导致编组非常复杂的数据结构,如果我可以为第三方类/函数做声明的话。

如果有任何阅读材料/教程,您可以推荐或指出正确的方向,我将不胜感激。

提前非常感谢

【问题讨论】:

我建议阅读***.com/questions/2495632/…中的建议/问题 【参考方案1】:

我发现http://www.pinvoke.net/ 很有帮助。

还有http://clrinterop.codeplex.com/releases/view/14120

此外,我发现有帮助的是做一个测试解决方案。首先制作一个最初什么都不做的 C# 控制台应用程序,然后制作另一个项目(文件、新建、项目、Visual C++、Win32 控制台应用程序) 当向导出现时,选择 DLL、导出符号(如果需要,可以选择 ATL 和/或 MFC)。 当项目出现时,按原样编译并将 DLL 复制到 C# 项目的输出文件夹 使用 P/Invoke Interop Assistant 根据标头生成 C# 方法(我将从不接受参数并返回 int 的函数开始。) 然后从您的 C# 控制台应用程序中调用它。 一旦我确定了它如何与非常简单的东西一起工作,一次扩展一点就容易得多。 尝试自己编写 C# 调用,然后使用 P/Invoke Interop Assistant 进行仔细检查。最良好的祝愿。

【讨论】:

以上是关于在 C# 中,调用第三方 API (C++)的主要内容,如果未能解决你的问题,请参考以下文章

Unix C++ 第三方 API 调用

Unity在Android和iOS中如何调用Native API

Unity在Android和iOS中如何调用Native API

从 C# 调用 C++ dll 中的方法,没有任何信息,只有头文件

java调用C#封装的DLL文件

在 C# 中处理纯虚函数调用