我编写了C ++代码,其中包含了一些库,并定义了一些函数和main。我试图在C#中为这段代码添加一个GUI。
此代码将数据(double[]
)发送到服务器。我要做的是使用C#创建一个图形用户界面,这样我就可以开始发送数据,点击一个按钮。
我怎么能这样做?
我试图运行c ++项目解决方案的文件.exe,但这不起作用。
答案 0 :(得分:1)
你有很多方法可以从C#运行C ++代码:
这是一种规范的,善于做事的方式,但我觉得这对你的水平来说是令人生畏的。基本上,您将C ++类公开为C ++项目中的COM对象(处理COM数据类型之间的转换,如_bstr_t
for strings,et al)。然后将此COM对象添加为C#项目中的引用。这会对您的C#代码造成最小的痛苦。
我怀疑这里最大的障碍是你需要了解COM是如何工作的,如果你没有经验,这将是非常艰巨的。
如果您不需要调用许多功能,这可能会容易得多。它与您从C#调用本机winapi函数的方式相同。您从C ++ DLL导出C风格的函数,并在C#中导入它们。数据类型之间的转换是通过C#中的编组系统完成的。因此,一般来说,这会给C#代码带来更多负担,而不是C ++代码。
这里的问题是你不能输出很多C ++的东西。因此,例如,您无法导出如下函数:
void myFunction(std::string& s);
因为std::string
是一个模板,并且会对内存管理造成严重破坏,并且可能只会导致堆损坏。
如果您所做的只是通过套接字发送一些数据,那么只需将其写入C#即可。对于很多事情来说,C#比C ++更快地用于开发,所以它可能值得研究一下它将付出多少努力。