Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

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 gui

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    TARGET = orm-test
    TEMPLATE = app
    DEFINES += QT_DEPRECATED_WARNINGS

    CONFIG += c++11

    SOURCES +=
    main.cpp
    mainwindow.cpp

    HEADERS +=
    mainwindow.h

    FORMS +=
    mainwindow.ui

    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/ -lsqlapiddll
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/ -lsqlapiddlld

    INCLUDEPATH += $$PWD/libs
    DEPENDPATH += $$PWD/libs

    Ausschnitt aus meiner mainwindow.cpp:
    //Includes
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <SQLAPI.h> // main SQLAPI++ header

    Fehlermeldung:
    SQLAPI.h: No such file or directory


  • Qt Champions 2019

    @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.


  • Qt Champions 2019

    @henrik2016 Existiert die Datei dort und heißt sie wirklich SQLAPI.h?
    Außerdem bedeutet

    INCLUDEPATH += $$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.


  • Qt Champions 2019

    @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?


  • Qt Champions 2019

    @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.


Log in to reply