在 C++ DLL 和 C# 类之间来回传递变量

Posted

技术标签:

【中文标题】在 C++ DLL 和 C# 类之间来回传递变量【英文标题】:passing forth and back variables between c++ DLL and C# class 【发布时间】:2015-07-23 11:40:18 【问题描述】:

请看this page for more details

我已经按照 MSDN 中的说明实现了 c++ DLL 示例。该示例允许设计一个 DLL,它公开了 2 个双精度值之间的 4 个基本算术运算。并解释如何在 c++ 控制台应用程序中使用这个 dll。

我的问题是,是否可以在 C# 控制台应用程序中使用此 DLL?如果是这样,我该怎么做?我的意思是将 2 个值从 C# 控制台应用程序发送到 c++ DLL 并取回它们的算术结果。

学习这样的东西对于希望同时使用 c# 和 c++ 的程序员来说是非常有趣的,我想我就是其中之一,因此对于我和未来的人来说,请如果可能,请提供基于 MSDN 示例的演示

【问题讨论】:

那里有演示和教程。你需要自己做研究。请编写您自己的示例,因为它是最好的学习方式,然后就您已经编写的代码提出任何具体问题。 那么这个网站关于问题和获得答案?还是关于提出问题并等待像您这样的人告诉网络上有演示?这个网站曾经很棒,但我认为随着时间的推移,它的名声很差 如果您正在使用示例中的类,您可以阅读此link,但如果它仅用于静态方法,您可能希望将它们“发布”为静态非类函数并使用 @ 987654325@ link 与 DllImport 属性 link 结合使用。其余的你必须自己弄清楚,或者带着更具体的问题回来。 谢谢@FrederickGrumieaux @FrederickGrumieaux 如何将 c++ Dll 添加到 C# 控制台应用程序? 【参考方案1】:

看看here。在 User32.dll 中调用 MessageBox 所需要的就是这个(来自那里的示例):

[DllImport("User32.dll", CharSet=CharSet.Unicode)] 
public static extern int MessageBox(IntPtr h, string m, string c, int type);

然后你可以像普通的 C# 方法一样调用它。如果您有更复杂的类型,例如类,请阅读this MSDN article。

【讨论】:

如何将 c++ Dll 添加到 C# Console App 中? @wezten 将它放在应用程序文件夹中,或放在PATH 文件夹之一中。

以上是关于在 C++ DLL 和 C# 类之间来回传递变量的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 和非托管 C++ 之间传递自定义对象

在非托管 C++ DLL 和托管 C# UI 之间发送信息

在 C++ 和 C# 之间传递向量结构

如何在 DLL 之间传递对象指针?

当结构仅在运行时已知时,将结构从 c++ 传递到 c#

C# 调用C++ DLL,而c++函数的有一个参数需要是null,该怎么传递?