c# - 如何将 C# GUI 添加到 C++ 代码?

标签 c# c++ user-interface

我编写了 C++ 代码,其中包含一些库并定义了一些函数以及 main.我正在尝试在 C# 中向此代码添加 GUI。

此代码将数据 (double[]) 发送到服务器。我要做的是使用 C# 创建一个图形用户界面,让我可以开始发送数据,点击一个按钮。

我该怎么做?

我试过运行c++项目解决方案的.exe文件,但是不行。

最佳答案

您有很多方法可以从 C# 运行 C++ 代码:

COM

这是做事的规范、好方法,但我感觉这在您的水平上会令人望而生畏。基本上,您会将 C++ 类公开为 C++ 项目中的 COM 对象(处理 COM 数据类型之间的转换,例如 _bstr_t 用于字符串等)。然后将此 COM 对象添加为 C# 项目中的引用。这对您的 C# 代码造成的痛苦最小。

我怀疑这里最大的障碍是您需要了解 COM 的工作原理,如果您还没有这方面的经验,这将是非常艰巨的。

类C DLL

如果您不需要调用很多函数,这可能会容易得多。这与从 C# 调用 native winapi 函数的方式相同。您从 C++ DLL 中导出 C 风格的函数,然后在 C# 中导入它们。数据类型之间的转换是通过 C# 中的编码系统完成的。所以一般来说,这将更多的负担放在 C# 代码上,而不是 C++ 代码。

这里的问题是您不能导出太多 C++ 的东西。因此,例如,您不能导出如下函数:

void myFunction(std::string& s);

因为 std::string 是一个模板,将对内存管理造成严重破坏,并且可能只会导致堆损坏。

用C#重写

如果您所做的只是通过套接字发送一些数据,那么只需用 C# 编写即可。对于许多事情,C# 的开发速度比 C++ 快得多,因此可能值得研究这需要付出多少努力。

关于c# - 如何将 C# GUI 添加到 C++ 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32157720/

相关文章:

c# - SQL Linq 与多列相交

c# - 面向初学者的 ASP .NET Ajax 示例

c# - INotifyPropertyChanged - 为什么要进行额外的分配?

c++ - 一个普通的 `char` 可能有陷阱值吗?

c# - 在密码框的某些事件上显示密码字符

c# - OpenRasta 是否支持 HEAD HTTP 方法?

c++ - 为什么我将两个短整数相乘得到一个负数?

c++ - 将长位数组映射到查找表

multithreading - 使用带有GUI的QT复制文件的正确方法,可避免卡住

java - 如何更改按钮单击时的边框标题?