Unsolved Einbinden von SQLAPI++ library
-
Hallo zusammen,
ich versuche schon einige Zeit die SQLAPI++ library in meinem Projekt als externe Bibliothek einzubinden. Allerdings läuft das Ganze ständig auf einen Fehler. Da das Repo mehrere unterschiedliche Bibliotheken für verschiedene Compiler zur Verfügung stellt bin ich mir auch nicht ganz sicher, ob ich die Datei erwischt habe.
Mein .pro Datei (Im Verzeichnis libs befinden sich die .a files):
QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = orm-test
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGSCONFIG += c++11
SOURCES +=
main.cpp
mainwindow.cppHEADERS +=
mainwindow.hFORMS +=
mainwindow.uiwin32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/ -lsqlapiddll
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/ -lsqlapiddlldINCLUDEPATH += $$PWD/libs
DEPENDPATH += $$PWD/libsAusschnitt aus meiner mainwindow.cpp:
//Includes
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <SQLAPI.h> // main SQLAPI++ headerFehlermeldung:
SQLAPI.h: No such file or directory -
@henrik2016 said in Einbinden von SQLAPI++ library:
INCLUDEPATH += $$PWD/libs
Sieht nicht richtig aus.
Header-Files sind normallerweise in einem Unterverzeichnis mit dem Namen "include" drin, nicht "libs". -
Habe das Verzeichnis "libs" selbst angelegt und die Dateien dort eingefügt.
Meine Vermutung ist, dass ich nicht alle oder falsche Dateien linke. Steige durch die Anleitung von SQLAPI++ leider nicht ganz durch. -
@henrik2016 Existiert die Datei dort und heißt sie wirklich SQLAPI.h?
Außerdem bedeutetINCLUDEPATH += $$PWD/libs
dass im unterverzeichnis "libs" geschaut wird relativ zur pro Datei.
"dass ich nicht alle oder falsche Dateien linke" - nein, die Fehlermeldung hat gar nichts mit Linken zu tun, sondern mit Compilieren (Header Datei wird nicht gefunden).
-
Ich habe jetzt mal den Ordner "include" aus der heruntergeladenen Bibliothek kopiert und in mein Projektverzeichnis eingefügt. Dort befindet sich alle Header-Files. Nun kann die Header-Datei auch gefunden werden.
Allerdings erscheint nun eine Fehlermeldung, wenn ich ein Objekt erzeugen und verwenden möchte. Zum Beipiel:
void MainWindow::connect()
{
SAConnection con; // connection object
...
}
Fehler: undefined reference to `SAConnection::SAConnection()'Den Code habe ich aus einem Beipiel der Library.
-
@henrik2016 said in Einbinden von SQLAPI++ library:
Fehler: undefined reference to `SAConnection::SAConnection()'
Das ist jetzt ein Linker-Fehler.
Das bedeutet, dass entweder die Lib nicht gefunden wird oder diese incompatible ist (anderer Compiler oder für andere Architektur erstellt). -
Ahh okay.
Das heißt dann wahrscheinlich, dass ich mir die Lib für meinen Compiler erzeugen muss, oder? -
@henrik2016 Du hast vorher geschrieben, dass es die Lib für verschiedene Compiler gibt - vielleicht ist dort auch eine für deinen dabei? Du solltest auch die Linker Aufrufe und Ausgabe mal anschauen um zu sehen was genau an den Linker übergeben wird und ob dieser irgendwelche Warnungen ausgibt.