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

Qt for Windows版本下编译QtDBus模块

2010-08-27 11:00 525 查看
转载时请注明出处和作者联系方式

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