在 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# 类之间来回传递变量的主要内容,如果未能解决你的问题,请参考以下文章