从 c# 调用 C++ 代码
Posted
技术标签:
【中文标题】从 c# 调用 C++ 代码【英文标题】:Call C++ code from c# 【发布时间】:2013-07-12 17:39:23 【问题描述】:我正在 WPF C# (Visual Studio 2008) 中为用 c++ 编写的数学模型实现一个 GUI。我可以在单个 VS 解决方案中完全访问两个项目的源代码
我的问题是:
-
是否可以从 C# 调用 C++ 中的方法?
如果是,最好的选择是什么?
我需要在 C++ 中做什么才能“公开”该方法?
我曾尝试“添加参考”,但我认为它不会像这样工作。
【问题讨论】:
它叫做互操作。该术语应该可以帮助您进行 Google 搜索。您可以进行 C 风格的声明互操作,或 COM 对象互操作。这应该可以帮助您入门:msdn.microsoft.com/en-us/library/ms173184.aspx 【参考方案1】:有多种选择。
最简单的选择通常是使用 C++/CLI 为您需要的 C++ 方法创建一个包装器。然后,您可以从 C# 项目中添加对 C++ DLL 的引用,并正常使用它。
或者,您可以通过 C API 公开所需的 C++ 方法,然后使用 P/Invoke 从 C# 调用它们。
【讨论】:
【参考方案2】:如果你有一个 C++ 库 (.dll),你可以像这样在 C# 中使用它:
[DllImport("filename.dll")]
public static extern void MethodName(ParameterList);
然后你可以在你的 C# 代码中调用MethodName(...)
。
【讨论】:
请注意,这需要将MethodName
导出为 C 样式方法(即:在声明中使用 extern "C"
),因此它的名称不会得到 C++ 名称修饰。以上是关于从 c# 调用 C++ 代码的主要内容,如果未能解决你的问题,请参考以下文章
使用 c# 中的 c++ 引用中的引用从 C# 错误调用 C++ 代码