2011-05-24 188 views
1

我已经用QT编写了一个应用程序,提供GUI和数据库连接,并且所选的驱动程序是SQLITE。当我在自己的系统上工作(更新到最新版本的Ubuntu desctop 11)时,安装了Qt4 SDK和sqlite,一切正常。但是,尝试在目标PC上启动我的可执行文件以失败告终。QT/SQLITE应用程序部署问题

这里是我的亲文件:

#------------------------------------------------- 
# 
# Project created by QtCreator 2011-05-22T09:15:05 
# 
#------------------------------------------------- 

QT  += core gui sql 

TARGET = Peacecourse 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp \ 
    goodtable.cpp 

HEADERS += mainwindow.h \ 
    peaceCon.h \ 
    goodtable.h 

FORMS += mainwindow.ui \ 
    goodtable.ui 

CONFIG += static 
#wince*: DEPLOYMENT_PLUGIN += qsqlite 

对于部署我所做的就是复制我的可执行文件(因为我自己的系统上工作)。结果,我得到了关于缺少QSQLITE驱动程序的消息,自然,程序没有再运行。

关于目标系统的一些信息:就我可以确定的来说,它是Ubuntu,年龄适中,我没有root权限,并且安装QT是非常不容易的。但是,它具有Sun Virtual Box,原则上可以在虚拟机上创建所需的环境。然而,当我试图做到这一点时(我责备糟糕的硬件),我因为文件系统错误而无法复制QT安装文件在虚拟机的桌面上的步骤。

另一件事,那里没有QT,但安装了sqlite。

我如何证明我的应用程序在我描述的系统上的工作?我怎样才能创建我的应用程序的单一可执行的分布?

UPDATE

上 'CLEN' 的Ubuntu 11.04的另一个问题又出现了(没有任何更新,QT或源码)。尝试启动应用程序后,我得到消息:

error while loading shared libraries: libQtSql.so.4: cannot open shared object file: No such file or directory 

这就引出了我一个问题:我怎样才能使这个图书馆嵌入在我的应用程序,以消除.so文件的需要?

回答

1

你需要部署sqlite的插件,以及:它在插件/ sqlrivers在SDK

最可能的是,你会想看看这个页面,约building installers (check generic section)

如果我没记错正确地说,在正确命名的子文件夹中部署此文件就足够了。

编辑

您可以在Qt official doc看看有关于插件如何在运行时寻找一个明确的说法。 基本上,您可能需要用您的二进制路径调用QCoreApplication::addLibraryPath(),并将您的插件部署到名为sqldrivers的子文件夹中。简单地将文件夹放在当前路径中是不够的。

+0

如果我正确理解你,将sqlite的.so文件放在./plugins/sqldrivers(其中.exe是可执行文件所在的文件夹)将会解决问题吗? – Srv19 2011-05-24 10:22:21

+0

更新了我的回答,提供更多详细信息 – Bruce 2011-05-25 02:05:51

+0

谢谢。我将它放在一起并报告结果。 – Srv19 2011-05-25 08:22:07