2011-05-24 187 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