2015-05-29 48 views
0

我有一個應用程序,應該連接到數據庫。 linux下我已經沒有問題,但在Windows下 - >我要添加到系統的「路徑」的地方,那裏QT環境放置(C:/ QT /工具/ QTCreator /箱),否則它不工作,顯示如下的錯誤。 ID不工作,如果我把EXE文件放在pendrive太QT - PostgreSQL的插件錯誤

我想把這個應用程序發送給我的朋友,誰不應該安裝QT環境,只是運行這個程序。

迪爾斯在我的U盤

/ APP.EXE 插件(DIR) -qsqlpsql.dll -sqldrivers(DIR) --qsqlpsql.dll

我應該怎麼辦?我錯在哪裏?

親文件:

QT  += core gui sql 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = NZP 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 
win32{ 
LIBS += -L"C:/Program Files/psqlODBC/0903/bin" 
} 
RC_FILE += Info.rc 
在我main.cpp中

QApplication a(argc, argv); 
    qDebug()<<QCoreApplication::applicationDirPath(); 
    a.addLibraryPath(QCoreApplication::applicationDirPath()); 
    a.addLibraryPath(QCoreApplication::applicationDirPath()+"/plugins"); 
    qDebug()<<a.libraryPaths(); 

    MainWindow w; 
    w.show(); 

    return a.exec(); 

如果我Windows下運行這個應用程序,我在那裏安裝了QT - everythink是正確的,但如果我在移動它pendrive或運行在沒有QT框架的機器下 - 我變成了錯誤:

QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC QPSQL QPSQL7 

無法打開數據庫連接。無效的司機被指定。

我已經看過在互聯網,但現在沒有明智的解決方案 幫助!

+0

90%的PSQL駕駛員無法看到'libpq.dll' – Amartel

回答

0

唉!我發現了這個問題!

1. 您在安裝目的地有這樣的文件夾結構:

yourap.exe 
-plugins -> folder 
--sqldrivers -> folder 
and you have to copy from migws/bin not QT/Tools/Creator/bin! 
---qsqlpsql.dll 

在您的應用程序目錄下,你需要複製

libeay32.dll 

與您發現:

C:\Program Files\psqlODBC\0903\bin (http://www.postgresql.org/ftp/odbc/versions/msi/ - ii used https://ftp.postgresql.org/pub/odbc/versions/msi/psqlodbc_09_03_0300.zip) 

在您的應用程序(main.cpp)中,只需添加路徑:

QApplication a(argc, argv); 
a.addLibraryPath(QCoreApplication::applicationDirPath()+"/plugins/"); 
a.addLibraryPath(QCoreApplication::applicationDirPath());