在C ++中使用C#库

时间:2015-10-23 15:16:25

标签: c# c++ sockets tcp libraries

我在C#中开发了一个处理TCP / IP连接的应用程序,在运行了一些诊断之后,我得出结论,可以改进编译和运行时。我决定用C ++重写整个程序,因为它在Lunix环境中也运行得更顺畅。

有没有办法在C ++中使用Socket,Net和Net.IPAddress等C#库?

我对此做了一些研究,发现我可以通过以下方式在C ++中调用这些库:#using(shevron)System.dll> 但是如果它会导致Lunix环境中的开销和问题,那我就是他的。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,有关于使用本机代码中的C#库的Mono文档,参见评论中的链接http://www.mono-project.com/docs/advanced/embedding/。本机程序基本上嵌入了Mono运行时。

Hans Passant提出了有效的反对意见,即C ++代码中的#using指令表明您的“C ++”代码实际上是Microsoft专有的C ++ / CLI,它不能在Linux下编译。端口的工作量很大程度上取决于您使用的非C ++功能的数量。与Mono的互操作也比调用Microsoft生态系统中的C#函数更复杂。

如果你看一下性能,我的直觉就是网络密码的性能将由网络主导。除非您的目标是嵌入式系统,否则浪费几个CPU周期应该不成问题。在PC上,以Mono或本机运行可能没有多大区别。但这也很大程度上取决于实际应用(更多的通信或更多的计算?)。