Windows版本下编译QtDBus模块

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

Windows版本下编译QtDBus模块_第1张图片

在附加库目录里面添加C:\Qt\4.5.0\winDbus\lib

Windows版本下编译QtDBus模块_第2张图片

编译成功后,在[QT-dir]\bin目录下会生成QtDBus4.dll以及QtDBusd4.dll文件,

在C:\Qt\4.5.0\src\dbus\release目录下生成如下文件,将生成的dll文件和lib文件拷贝到qt的bin目录和lib目录下

Windows版本下编译QtDBus模块_第3张图片

C:生成QtDBus Tools

1. 用"Microsoft Visual Studio 2005"打开[QT-dir]\tools\qdbus\qdbus.pro, 编译生成项目

Windows版本下编译QtDBus模块_第4张图片

2.编译结束后会在[QT-dir]\bin目录下生成四个可执行文件

Windows版本下编译QtDBus模块_第5张图片

D:生成QtDBus例子

1. 用"Microsoft Visual Studio 2005"打开[QT-dir]\exmaples\dbus\dbus.pro 编译生成项目

2. 编译结束后会在examples目录的各自的子目录下生成可执行文件

image

image

E: 运行Qt 的 Remote Control Car例子

下面来运行一下例子中的遥控车的程序.

1. 首先启动windbus service, 打开命令行窗口cmd, 执行

cd [winDBus-dir]\bin

dbus-daemon --config-file=../etc/session.conf

也可以直接运行dbus-launch.exe程序

Windows版本下编译QtDBus模块_第6张图片

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

Windows版本下编译QtDBus模块_第7张图片

启动后应该可以考到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个按钮可以控制汽车的运动.

Windows版本下编译QtDBus模块_第8张图片

以上就是生成QtDBus模块的过程, 接下来就是利用它来编写应用程序. 刚接触DBus, 欢迎熟悉的朋友交流DBus应用方面的经验.

参考:http://hi.baidu.com/grdd/blog/item/b84a3ffa838269879e5146ce.html

你可能感兴趣的:(Windows版本下编译QtDBus模块)