从 C# .NET 应用程序调用 C/C++ 代码

Posted

技术标签:

【中文标题】从 C# .NET 应用程序调用 C/C++ 代码【英文标题】:Calling C/C++ Code from C# .NET application 【发布时间】:2014-02-06 12:01:29 【问题描述】:

我有一个 c++ 应用程序,我需要从 C# 应用程序调用它的类方法

我按照以下教程为 C++ 应用程序创建了一个 DLL 文件

http://msdn.microsoft.com/en-us/library/ms235636.aspx

当我尝试为 DLL 文件添加引用时,它给了我错误消息

a reference to could not be added please make sure that the file is accessible and that it is a valid assembky or COM component

【问题讨论】:

【参考方案1】:

您不能添加非托管 DLL 作为参考。此外,您不能在 C# 中使用非托管 DLL 中的 C++ 类。以下是您的选择:

    将 C++ 代码编译为混合模式 C++/CLI 程序集,并将非托管 C++ 类包装在 ref 类中。通过添加混合模式 C++/CLI 程序集作为参考,C# 可以以通常的方式使用这些。 使用 COM 包装器包装非托管 C++ 类,并像使用任何其他 COM 库一样从 C# 中使用这些类。 使用 C 样式函数包装 C++ 类,并使用 p/invoke 从 C# 中使用它们。

在这些选项中,通常推荐第一个。

【讨论】:

实际上,我正在尝试使用 COM 的第二个选项。但如果推荐第一个选项,您能否指点我该选项的教程?? codeproject.com/Articles/20466/… Thaaaaaank 你大卫,

以上是关于从 C# .NET 应用程序调用 C/C++ 代码的主要内容,如果未能解决你的问题,请参考以下文章

C#通过PInvoke调用c++函数的备忘录

原生 C/C++ 和 C# (.NET) 之间最轻量的 IPC 解决方案是啥?

C#C#/.Net从基础到就业视频教程

如何从本机 C(++) DLL 调用 .NET (C#) 代码?

从 asp.net c# 应用程序调用 Sav32Cli.exe “代码 2 - 如果发现阻止进一步执行的错误”

C#调用C/C++的dll,一个库中包括多个函数,每调用一个函数都要用DllImport加载吗?求大神