日期:2014-05-17  浏览次数:20953 次

C#做界面 C++做dll供C#调用 效率如何?
大家好

我想问一个问题:
  就是感觉C#操作指针、地址等非常不方便;而C++的MFC做界面又会被那种消息机制搞得要吐;所以,我想到了一个办法,就是利用C#做界面(简单、快捷、且漂亮),然后在利用C++做dll供C#调用(特定的计算方法,姑且称为“算法”吧,比如RS485的Modbus发送和接收,CANOpen的发送和接收等)

我在网上搜了一下,这样干的人好像还不在少数?

那么我的问题是:
  如果这样干的话,效率会不会有提升? 
  还是反而会比纯C#更慢?
   
如果能干的话,稳定性会不会有问题?

请高手指导下,因为我现在是在用CANOpen进行下位机通讯(1ms一次),而以后肯定会用USB进行下位机通讯(别人做的是1秒钟1.6W个点,不知道是不是1秒钟通讯1.6W次?那感觉好像处理不过来啊)

如果可行的话,我要开始着手去学习了!

小弟在此谢谢了

------解决方案--------------------
效率不会低的,只会更好,当然要求就更高了,你必须同时会两者。
另外这样做更大的好处是,可以对算法部分加密,因为你的C++是混合编程了,即不能用IL反编译工具看到源码,也不能通过反汇编手段解析汇编码分析(虽然可以反汇编,但是更难理解,镶嵌了IL代码)。
------解决方案--------------------
C#做上层UI界面,C++作中间层调用,C做底层开发,调用关系:C++调用C的DLL,C#调用C++DLL,这个逻辑是目前大公司的主流,尤其是最新的WIN8 METRO开发,效率很好!不要听不懂装懂的人乱说!
------解决方案--------------------
推荐你使用DELPHI,完全符合你和3楼的要求:DELPHI 7
做界面,不输C#,甚至更加
论效率,不下C++
搞加密,强过C#9条街
唯一的缺点,开发出来的EXE体积只有1M多,比 .NET Framework 小太多了