Windows下VS编译QtDBus模块
| 分类: QT |
转自:http://www.cnblogs.com/mxly/archive/2011/01/06/1927604.html
Qt for Windows版本下编译QtDBus模块
Qt中已经包含了QtDBus模块, 但此模块只能在Unix系统下使用, 却不支持Windows系统.
这里介绍的是Windows系统下如何生成QtDBus库, 并通过Qt的例子和工具来演示DBus的运行和通讯.
需要使用的软件有(以我的环境为参考):
qt-win-commercial-4.5.0-vs2005.exe(编译为win32-msvc2005)
dbus-msvc-1.2.4-1-lib.tar.bz2
dbus-msvc-1.2.4-1-bin.tar.bz2
下载地址:http://sourceforge.net/projects/windbus/files/windbus/1.2.4/
整个过程分为5个步骤:
A.解压dbus-msvc-1.2.4-1-lib.tar.bz2,dbus-msvc-1.2.4-1-bin.tar.bz2到C:\Qt\4.5.0\winDbus(自行选定);
B.生成QtDBus动态库:
1. 用"Microsoft Visual Studio 2005"打开 [QT-dir]\src\dbus\dbus.pro项目;
[QT-dir]为Qt的安装目录, 比如C:\Qt\4.5.0;
2. 右键项目属性,设置相关属性,附加保护目录里面添加C:\Qt\4.5.0\winDbus\include
http://images.cnblogs.com/cnblogs_com/mxly/201012/201012281518432996.png
在附加库目录里面添加C:\Qt\4.5.0\winDbus\lib
http://images.cnblogs.com/cnblogs_com/mxly/201101/201101061312131606.png
编译成功后,在[QT-dir]\bin目录下会生成QtDBus4.dll以及QtDBusd4.dll文件,
在C:\Qt\4.5.0\src\dbus\release目录下生成如下文件,将生成的dll文件和lib文件拷贝到qt的bin目录和lib目录下
http://images.cnblogs.com/cnblogs_com/mxly/201101/201101061312133002.png
C:生成QtDBus Tools
1. 用"Microsoft Visual Studio 2005"打开[QT-dir]\tools\qdbus\qdbus.pro, 编译生成项目
http://images.cnblogs.com/cnblogs_com/mxly/201101/201101061312136034.png
2.编译结束后会在[QT-dir]\bin目录下生成四个可执行文件
http://images.cnblogs.com/cnblogs_com/mxly/201101/201101061312144605.png
D:生成QtDBus例子
1. 用"Microsoft Visual Studio 2005"打开[QT-dir]\exmaples\dbus\dbus.pro 编译生成项目
2. 编译结束后会在examples目录的各自的子目录下生成可执行文件
http://images.cnblogs.com/cnblogs_com/mxly/201101/201101061312147637.png
http://images.cnblogs.com/cnblogs_com/mxly/201101/201101061312143492.png
E: 运行Qt 的 Remote Control Car例子
下面来运行一下例子中的遥控车的程序.
1. 首先启动windbus service, 打开命令行窗口cmd, 执行
cd [winDBus-dir]\bin
dbus-daemon --config-file=../etc/session.conf
也可以直接运行dbus-launch.exe程序
http://images.cnblogs.com/cnblogs_com/mxly/201101/201101061312144572.png
2. 启动Qt工具qdbusviewer([QT-dir]\bin\qdbusviewer.exe)来查询DBus总线和接口,该程序是上述步骤B中生成的. 如果显示 "Error:Cannot connect to D-Bus: ", 原因是因为无法加载dbus-1.dll, 可以将此文件从winDBus\bin目录下复制到[QT-dir]\bin目录下, 也可以将winDBus\bin的目录加到环境变量PATH中. 另外启动此程序还需要环境变量DBUS_SESSION_BUS_ADDRESS(见[winDBus-dir]\bin\dbus-env.bat文件), 设置
set DBUS_SESSION_BUS_ADDRESS=tcp:host=localhost,port=12434
也可以在命令行窗口中通过执行以下命令来执行:
[winDBus-dir]\bin\dbus-env.bat
[QT-dir]\bin\qdbusviewer.exe
http://hiphotos.baidu.com/grdd/pic/item/9f93be8f1b5604aaf01f36f0.jpg
启动后应该可以考到DBus总线服务 org.freedesktop.DBus以及相应的方法
3. 启动遥控汽车程序([QT-dir]\examples\dbus\remotecontrolledcar\car\release\car.exe), 这时候, 在qdbusviewer的Service栏目中会多出一个服务, com.trolltech.CarExample
4. 启动遥控器程序([QT-dir]\examples\dbus\remotecontrolledcar\controller\release\controller.exe), 程序会自动连接刚才启动的car程序,利用界面上的4个按钮可以控制汽车的运动.
http://hiphotos.baidu.com/grdd/pic/item/97a0a164fa47e8b4f73654fe.jpg
以上就是生成QtDBus模块的过程, 接下来就是利用它来编写应用程序. 刚接触DBus, 欢迎熟悉的朋友交流DBus应用方面的经验.

加载中…