在C#应用程序中使用C或C ++ API

时间:2009-08-28 06:00:11

标签: windows-mobile

我对Windows移动开发有一点疑问,是否可以在C#应用程序中使用c或C ++ Apis,反之亦然?如果有可能如何完成?

4 个答案:

答案 0 :(得分:2)

当我第一次开始使用P / Invoke机制时,我发现查看示例真有帮助。事实证明,在pinvoke.net

中描述了许多Win32 C-API函数的“P /调用”

答案 1 :(得分:1)

您可以通过所谓的P / Invoke调用(“Platform Invoke”)使用“普通”C-API。这包括Windows API和导出普通函数调用的其他库。但是,我不知道返回对象的C ++ DLL。这可能更难......?

在Windows上,您始终可以以可以注册为COM库的方式创建.NET DLL。然后,您可以像使用任何支持使用COM对象的语言(例如VB6,Delphi,C ++等)那样使用公开的.NET类,就像任何其他COM对象一样。

然而,这似乎在Windows Mobile中不起作用!

所以: 在任何平台上使用C#中的C-API - 是的,没问题,学习如何进行P / Invoke 在Windows上使用C ++中的C#DLL - 是的,需要创建COM对象 在Windows Mobile上使用C ++中的C#DLL - 无效的AFAIK

答案 2 :(得分:1)

如果您有一个带有导出C函数的本机DLL,您可以通过P / Invoke机制轻松使用它们。

但是,C ++类相当困难并且容易在C ++中使用。为此,在C ++ / CLI中编写托管程序集包装器会更好。这将生成一个可以在C#中使用的.NET程序集,并且您将能够像使用常规C ++项目一样使用C ++库。

答案 3 :(得分:0)

C非常简单,C ++由于错误而变得更加复杂。阅读此description