Verwendung verschiedener QTCore.dlls notwendig

Alles rund um die Programmierung mit Qt
Antworten
Rumbert
Beiträge: 48
Registriert: 25. Mai 2009 18:28
Wohnort: Witten

Verwendung verschiedener QTCore.dlls notwendig

Beitrag von Rumbert »

Nochmals hallo miteinander :-)

Ich entwickel unter Windows Vista mit Visual Studio 2008 und QT 4.4.3.
Damit erstelle ich eine QT-Application, welche DLLs einer Drittanbieter API verwendet.
Da die dll des Drittanbieters ebenfalls QT verwendet, wird zu der API u.a. QTCore4.dll (Version 4.5.1) mitgeliefert.
Schau ich die Debugversion der Drittanbieter DLL im Dependencywalker an, so wird als Abhängieges Modul u.a. die QTCore4d.dll aufgelistet in der Version 4.5.1, welche sich im selben Verzeichnis wie die Drittanbieter DLL befindet.
Erzeuge ich nun meine Applikation linke ich ja gegen meine QTCore4d.dll, die im QTDIR\bin liegt also die in der Version 4.4.3. Und wenn ich mir dann das Executeable im Dependencywalker anschaue, sehe ich dass die 4.4.3 dll auch für die Drittanbieter DLL benutzt wird. Und genau hier liegt das Problem, dass in der Drittanbieter DLL Aufrufe von Methoden sind wie z.B QFlagLocation, die nicht aufgelößt werden können, weil sie in der verwendeten DLL Version noch nicht existieren.
Gibt es eine Möglichkeit über das Pro-File einzustellen, dass ich explizit angeben kann für welche Abhängigkeit welche DLL verwendet werden soll?

Grüße Rumbert
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das hat nichts mit dem pro-file zu tun sondern damit dass ein Prozess nicht zwei Versionen ein und derselben Library laden kann.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

Ich sehe hier zwei Möglichkeiten, möglicherweise funktionieren ja beide:
1) Du benutzt die selbe Qt-Version wie der Drittanbieter
2) Du linkst Dein Programm statisch mit Deiner Qt-Version
Linux, das längste Text-Adventure aller Zeiten
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Statisch linken? Sollte nicht gehen da man dann z.B unter Umständen zwei QApplication-Objekte hat usw.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

davon ausgehend, dass die Library closed-source ist:

3) du bezahlst/überredest den Hersteller der Library, damit er dir eine Binary für dein Qt (und Compiler!!) liefert (falls qFlagLocation alles ist, kann der Source vermutlich auch unter 4.4 übersetzt werden).

Möglichweise kommt er dir ja auch entgegen, wenn du ihm eine komplette Entwicklungsumgebung in einer VirtualBox-VM sendest und es daher nur noch ein "qmake;make" braucht..

4) du bist zwingend auf genau diese Library und Qt 4.4 angewiesen: IPC (dein Programm + ein Qt4.5-Dienst, welcher die dll bedient)

manchmal gibt's halt keine einfachen lösungen...
Rumbert
Beiträge: 48
Registriert: 25. Mai 2009 18:28
Wohnort: Witten

Beitrag von Rumbert »

Super, da habe ich eine Menge Ansatzpunkte, um das Problem zu lösen, auf die ich so nie gekommen wäre!
Vielen Dank für die Antworten!

Grüße Rumbert
phlox81
Beiträge: 97
Registriert: 7. Juli 2009 12:30
Kontaktdaten:

Beitrag von phlox81 »

Ansonsten gäbe es noch die Möglichkeit beide Programme zu trennen, und dazwischen mit Interprocess oder Sockets die Kommunikation ablaufen zu lassen. Aber das ist sicher nur eine Option, wenn nichts anderes mehr geht ;)
Antworten