Hallo mal wieder,

vor etlicher Zeit, bestimmt so ca. vor 4-5 Jahren habe ich für mein Laserfeed-Projekt auf meinem PC ein Qt eingerichtet und für die Datenbank-Verbindung irgendwann einmal die SQL-Treiber kompiliert.
Ich bin froh, dass ich den PC immer noch nicht mal neu aufsetzen musste, irgendwie habe ich es bisher nicht geschafft die Entwicklungsumgebung mal auf Windows 10 zu heben und meine Projekte wirklich ohne Probleme zum Übersetzen / Laufen zu bringen.
Da mein PC noch auf Windows 7 läuft und demnächst ja leider der Support für Windows 7 endet, leider auch meine Festplatten-Konfiguration kein Upgrade auf Windows 10 zulässt, muss ich demnächst mal eine komplette Neuinstallation meines Rechners durchführen. Das ist echt Mist, aber leider nicht zu vermeiden.

Um das zu üben, habe ich jetzt erst einmal versucht, Qt 4.8.5 (ja, das ist echt alt, aber läuft immerhin noch) auf mein Notebook zu bekommen und dort mal meine Projekte zu übersetzen.
Dazu benötige ich dummerweise auch den Oracle-SQL-Treiber, da sowohl mein neues Tool als auch Laserfeed gegen eine Oracle Express-Datenbank laufen.

Zwar gibt es ein Tutorial: http://doc.qt.io/archives/qt-4.8/sql-driver.html, wie man die OCI-Treiber kompiliert, spannenderweise funktioniert der Windows-Compile so wie angegeben NICHT!!!

Daher mal ein kurzes Tutorial von mir.
Als erstes benötigt ihr ein instant-client-sdk, welchen ihr bei Oracle direkt herunterladen könnt. Wichtig hierbei ist, dass, wenn ihr wie ich einen mingw32-Compiler nutzt, auch eine 32-bit-Variante des instant_client herunterladet. Den findet ihr hier: https://www.oracle.com/technetwork/topics/winsoft-085727.html.
Hier braucht man das sowohl den “normalen” instant-client (instantclient-basic-nt…) und auch das SDK (instantclient-sdk-nt).
Zum Übersetzen würde prinzipiell das sdk reichen, aber für die Ausführung der Anwendung benötigt ihr auch noch die dll’s des instantclient-basic-Paketes.

Nach Installation beider Pakete (am besten ins gleiche Verzeichnis) öffnet eine Kommandozeile und wechselt in das Quell-Verzeichnis des OCI-Plugins der Qt-Installation. In meinem Fall liegt Qt unter E:\Qt\4.8.5


cd /D E:\Qt\4.8.5\src\plugins\sqldrivers\oci

Entgegen der offiziellen Anleitung funktioniert das Setzen der Umgebungsvariablen so nicht. Stattdessen habe ich mich einfach an die Linux/Mac-Anleitung gehalten.

Gebt auf der Kommandozeile folgendes ein:

qmake "INCLUDEPATH+=<PATH>/sdk/include" "LIBS+=-L <PATH>/sdk/lib/msvc -loci" oci.pro

Ersetzt dabei <PATH> durch den Pfad, in den ihr euren Instantclient installiert habt. Achtet darauf, dort bitte Forward-Slashes, also “/” statt “\” zu nutzen. In dem Beispielaufruf gehe ich auch davon aus, dass die SDK-Komponente direkt in das Instant-Client-Basic-Verzeichnis installiert wurde, das SDK-Verzeichnis legt das entpacken des SDK-Zips dann entsprechend selbst an.

Wenn ihr Euch beim Verzeichnis nicht verschrieben habt (wie das in meinen ersten paar Versuchen der Fall war 🙂 ), sollte das problemlos funktionieren. Anschließend könnt ihr im gleichen Verzeichnis dann das make aufrufen.


mingw32-make release

bzw.


mingw32-make debug

Beides hat dann funktioniert. Wichtig bei der Ausführung Eures Programmes ist dann, dass die dll’s des Instantclient entweder in Eurem Pfad oder (das mache ich meistens so) in den Projektverzeichnis liegen. Dann sollte auch eine Datenbankverbindung aufgebaut werden können.

Schreibe einen Kommentar

Artikel, die Dir auch gefallen könnten

Homepage für Seifenblase Dresden

Hallo zusammen, lange ist es nun her, seitdem ich das letzte Mal was geschrieben habe, irgendwie ist auch immer laufend irgendetwas, so dass ich gar

mehr...

Free Your IT endlich online

Hallo da draußen, endlich sind meine ersten beiden Tutorial-Videos inkl. eines kleinen Vorstellungs-Videos online. Da ich grundsätzlich weg möchte von den zensurbehafteten Plattformen habe ich

mehr...

HTTPS-Abrufe mit Java

Hallo da draußen, gerade musste ich wieder einige Zeit lang schwitzen, weil bei meinem Cutworks-Projekt nach einer (vergessenen) SSL-Zertifikatserneuerung plötzlich eine essentielle Funktion ausgefallen und

mehr...