我编写了 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/