Programm auf mein anderen Rechner findet den SQLDriver nicht

Alles rund um die Programmierung mit Qt
Antworten
Spielgrips
Beiträge: 51
Registriert: 8. März 2006 23:09
Kontaktdaten:

Programm auf mein anderen Rechner findet den SQLDriver nicht

Beitrag von Spielgrips »

Hallo

und zwar habe ich eine Anwendung die mit MySQL Daten aus der Datenbank holt und hat den SQL Driver als Plugin, nur wie sage ich meiner Anwendung wo der SqlDriver (die DLL) vorhanden ist?

Habe die DLL in mein Ordner gelegt wo meine .exe ist und auch probiert im system Ordner reinzumachen, aber es klappt nicht, er findet den Treiber nicht :/!

Auf dem Rechner wo ich mit Qt entwickel geht die Anwendung ja..
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Programm auf mein anderen Rechner findet den SQLDriver n

Beitrag von Christian81 »

Spielgrips hat geschrieben: Auf dem Rechner wo ich mit Qt entwickel geht die Anwendung ja..
Aber dort liegt die sql-dll wohl in qtdir/plugins, oder? Soweit ich weiss müssen die plugins in exe-Directory/plugins liegen damit sie gefunden werden. Benutz einfach mal die Forums-Suche
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Spielgrips
Beiträge: 51
Registriert: 8. März 2006 23:09
Kontaktdaten:

Beitrag von Spielgrips »

Die Forum Suche habe ich ja genutzt! Sonst würde ich hier nicht posten! Ich habe den Ordner Plugins erstellt und alle Driver darein kopiert! Und trotzdem gehts netttt!
Zuletzt geändert von Spielgrips am 3. April 2006 17:40, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Spielgrips hat geschrieben:Die Forum Suche habe ich ja genutzt!!!! Sonst würde ich hier nicht posten! Ich habe den Ordner Plugins erstellt und alle Driver darein kopiert! Und trotzdem gehts netttt!
Ok, mit den vielen '!' hast Du Dich für mich disqualifiziert. :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Spielgrips
Beiträge: 51
Registriert: 8. März 2006 23:09
Kontaktdaten:

Beitrag von Spielgrips »

Ich will hier keine Gefühle hören sondern wissen welchen Path er eigentlich absucht oder wo ich die .dll hinkopieren soll!? In der Dokumentation steht aber auch nix drüber, die leben wohl auf'm Mond! Die erklären nur wie man das Plugin erstellt, aber wie man es am besten einbinden soll wenn man auf ein anderen Rechner es aufruft!
Spielgrips
Beiträge: 51
Registriert: 8. März 2006 23:09
Kontaktdaten:

Beitrag von Spielgrips »

So habs und zwar ist der Default Plugin Ordner Path INSTALL_PATH_VON_QT/plugins!
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

Die Plguins-howto von Trolltech sollte es da doch tun, oder?

Besonders interessant
QSqlDriverPlugin plugins/sqldrivers Case Sensitive
[...]
But where is the plugins directory? When the application is run, Qt will first treat the application's executable directory as the pluginsbase. For example if the application is in C:\Program Files\MyApp and has a style plugin, Qt will look in C:\Program Files\MyApp\styles.
[...]
The application can then call QCoreApplication::addLibraryPath() with this path and your plugins will be available to the application. Note that the final part of the path (e.g., styles) cannot be changed.
Es folgt, dass der Ordner in dem deine SQL-Plugin Libraries müsste sqldrivers heißen...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Ich habe es so gemacht .... jedoch habe ich es lieber mit statische libs zu arbeiten so kann die exe ueberal sein ohne andere dll ...

tips.... mit depends.exe => http://www.dependencywalker.com/ kann man rausfinden (oder raus greppen) welche dll das programm benutzt und kann so den installer bauen oder die dll mitgeben....

Code: Alles auswählen


/*  in der main befor nur eine classe startet */

#if defined(Q_OS_WIN32 )
	app.addLibraryPath( app.applicationDirPath() + "/namepfad");
        /*  die dll mussen also dort sein das andere Window$¤  darauf kommen */
     /* ansonsten mit statische libs arbeiten ...*/
#endif

/*  pro file => CONFIG	+= qt warn_on release   #mac  packt die plug-in ins app dir die locale jedoch nicht ...  muss mal mit build static probieren...#  */

#if defined( Q_WS_X11 )
    QString transdir=PREFIX"/share/qt4ds_x11/locale/";
    #endif
    #if defined( Q_WS_MACX )
    QString transdir="/Applications/qt4ds_mac.app/Contents/Resources/locale/";
    #endif
    #if defined(Q_WS_WIN)
    QString transdir=QCoreApplication::applicationDirPath()+"/locale/";
    #endif
    
    /* other way install all locale to QString workdir = QString( "%1/.%2/" ).arg( QDir::homePath(), QUIKCONFIG ); */
    /* best way build relase to put inside / CONFIG		+= qt warn_on release  */
    
    QString find = "qt4ds_" + QLocale::system().name().left(QLocale::system().name().indexOf("_"))+".qm";
    QString fullpath = transdir + find;
    QFileInfo fi( fullpath );

    if ( !fi.exists() ) {
	QMessageBox::warning( 0, "File error",
			      QString(" Cannot find translation file "+find+" for locale language: "+QLocale::system().name().left(QLocale::system().name().indexOf("_"))+
				      "\n Fullpath file is : "+fullpath+"\n insert file \""+find+"\" on subdir \""+transdir+"\" and all running ok!" ));  //////
	return 0;
    }

Antworten