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
在附加库目录里面添加C:\Qt\4.5.0\winDbus\lib
编译成功后,在[QT-dir]\bin目录下会生成QtDBus4.dll以及QtDBusd4.dll文件,
在C:\Qt\4.5.0\src\dbus\release目录下生成如下文件,将生成的dll文件和lib文件拷贝到qt的bin目录和lib目录下
C:生成QtDBus Tools
1. 用"Microsoft Visual Studio 2005"打开[QT-dir]\tools\qdbus\qdbus.pro, 编译生成项目
2.编译结束后会在[QT-dir]\bin目录下生成四个可执行文件
D:生成QtDBus例子
1. 用"Microsoft Visual Studio 2005"打开[QT-dir]\exmaples\dbus\dbus.pro 编译生成项目
2. 编译结束后会在examples目录的各自的子目录下生成可执行文件
E: 运行Qt 的 Remote Control Car例子
下面来运行一下例子中的遥控车的程序.
1. 首先启动windbus service, 打开命令行窗口cmd, 执行
cd [winDBus-dir]\bin
dbus-daemon --config-file=../etc/session.conf
也可以直接运行dbus-launch.exe程序
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
启动后应该可以考到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个按钮可以控制汽车的运动.
以上就是生成QtDBus模块的过程, 接下来就是利用它来编写应用程序. 刚接触DBus, 欢迎熟悉的朋友交流DBus应用方面的经验.
参考:http://hi.baidu.com/grdd/blog/item/b84a3ffa838269879e5146ce.html