您的位置:首页 > 编程语言 > Qt开发

Qt for Windows版本下编译QtDBus模块

2009-12-08 15:55 489 查看
转载时请注明出处和作者联系方式
作者联系方式:Lutx <80437 at zj dot com>

Qt中已经包含了QtDBus模块, 但此模块只能在Unix系统下使用, 却不支持Windows系统. 这里介绍的是Windows系统下如何生成QtDBus库, 并通过Qt的例子和工具来演示DBus的运行和通讯. 欢迎交流和指正.

说明: 以下步骤的软件版本分别为, Qt - 4.6.0 for msvc, QtCreator - 1.3.0, winDBus - 1.2.4, 这些都可以在网上下载到.

整个过程分为4个步骤:

A. 生成QtDBus动态库:
1. 在QtCreator中打开 [QT-dir]/src/dbus/dbus.pro项目;
[QT-dir]为Qt的安装目录, 比如C:/Qt/4.6.0;

2. 找到INCLUDEPATH行
# INCLUDEPATH += .
修改为
INCLUDEPATH += . [winDBus-dir]/include
LIBS_PRIVATE += -L[winDBus-dir]/lib

其中"[winDBus-dir]"为winDBus的所在目录. 这里是要把winDBus的头文件和库文件加到项目路径中.

3. 生成项目. 完成后在[QT-dir]/bin目录下会生成QtDBus4.dll以及QtDBusd4.dll文件, 在[QT-dir]/lib目录下会生成QtDBus4.lib以及QtDBusd4.lib以及上述的两个dll文件.

B:生成QtDBus Tools
1. 在QtCreator中打开[QT-dir]/tools/qdbus/qdbus.pro, 生成项目
2. 结束后会在[QT-dir]/bin目录下生成四个可执行文件 qdbus*.exe

C:生成QtDBus例子
1. 在QtCreator中打开[QT-dir]/exmaples/dbus/dbus.pro, 生成项目
2. 结束后会在examples目录的各自的子目录下生成可执行文件

D: 运行Qt 的 Remote Control Car例子
下面来运行一下例子中的遥控车的程序.
1. 首先启动windbus service, 打开命令行窗口cmd, 执行
cd [winDBus-dir]/bin
dbus-daemon --config-file=../etc/session.conf

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应用方面的经验.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: