WPF与托管C++ ——智能家居GUI框架实现(第2篇)

我纠结了好久究竟是将wpf界面作为dll供c++工程调用还是将c++做成dll供wpf调用。这个问题我刚开始并没有分清楚。因为我对c++比较熟悉所以就想当然的将c++的工程作为主项目,wpf做的界面供c++这面调用。后来发现这样做后患无穷。理想的一个智能家居项目我觉得应该是这样,一个主程序外加一些设备插件,这样整个项目可扩展性会很强。这样我前面做的项目需要返工。为防止自己偷懒,这次还是边做边记录吧。

托管c++与非托管c++

托管c++可以与c#直接兼容,因此这也是我选择的解决方案。这个解决方案的特点是需要在c++的dll工程中添加托管类。非托管c++编译出的dll不能再c#中直接使用,需要新建类并使用dllimport这样的命令编写接口,在一个大项目中我觉得这样比较麻烦。

C++调用WPF的dll

前面说了我最初是将wpf作为dll供c++这边调用,这样做有一定的弊端,不过里面涉及到的一些方法在其他地方或许可以借鉴到。关于如何配置我就不再赘述。当时主要借鉴了 muzizongheng 的这篇博客。感兴趣可以阅读一下。

WPF调用托管C++的dll

最后我决定对自己的项目做一下大改,清除了原有的版本库,对原工程做了一份拷贝,因为很多代码还可以用。我决定将wpf做的界面作为主项目,c++只是将一些不支持c#的设备的sdk封装成托管c++的dll供主项目调用。这一次其实还是像搬砖一样。我主要借鉴的是 http://joeyliu.blog.51cto.com/3647812/1297961 这篇博客。

小结

托管C++最根本的目的是令一些不兼容C#的设备的SDK能够并入整个项目当中,前面的两篇博客已经介绍的很清楚了,我这里不再赘述。本来这篇博客打算写的挺长的。因为我最初希望使用托管C++的方式来兼容一块视频采集卡的图像采集。那块采集卡只有一个基于win32的SDK。最终功能确实是实现了,但是很臃肿而且不知为何CPU占用非常高。这两天又想起这个问题来在网上找答案,我找到了更为简洁的解决方案。别的设备托管C++实现起来会比较简单,前面两个博客提供的知识已经够了,等以后碰到需要再用托管C++的时候再深入研究吧。接下来的文章将开始介绍整个项目的实现框架。




  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值