sqlite3.dll in den C++Builder 6 einbinden



  • Steht ganz oben, sonst würde er auch melden das er die Funktionen nicht kennt. 😉



  • Hier hatte mal VergissEs eine Wrapper Klasse reingestellt. Der Umgang damit ist eigentlich Narrensicher.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-185732-and-highlight-is-sqlite.html



  • Ändert ja nix daran, das ich SQLite ohne DLL einbinden möchte.

    Die Header ist included, die LIB ist drin und Compiler meldet keinerlei Fehler, erst am Schluss die Referenzen.



  • UUpps.
    Da gehörte das auch noch mit zu:

    http://www.magixsoft.de/sqlite/



  • @~SQLite
    Du hast doch schon wieder ein dll Projekt erzeugt. Du solltest eine (statische) Bibliothek erzeugen.



  • DAAAAAAAAAAANKKKKKKKEEEEEEEEEEE!!

    Der entscheidende Faktor war wohl

    Jetzt müssen wir noch die Seitengröße mit 64 festlegen das geht unter den Projektoptionen

    Was auch immer das bedeutet. Bei mir stand der Wert "0x010", sowie Haken bei Dynamische RTL bei BCB5 deaktiveren.

    Nun ist die LIB auch 1.53MB gross und funktioniert.

    Die fehlende Funktion habe ich mal hier hinzugefügt, falls es bessere (passendere) Wege gibt, kann man ja diese mal benennen 😉

    bool sqlite_db::FileIsReadOnly(std::string FileName)
    {
        int Attrs = FileGetAttr(FileName.c_str());
        if (Attrs & faReadOnly)
        {
            return true;
        }
        return false;
    }
    


  • Ich glaub mich tritt ein Elch. Ich habe keine Ahnung wieso das gestern geklappt hat (wenn es das wirklich hat)

    - Ich lade sqlite-source-3_5_6.zip
    - Entpacke es in einen sqlite3 Ordner
    - Öffne BCB5 und starte neue Bibliothek
    - Speicher Projekt als sqlite3.bpr
    - Füge alle C Dateien bis auf tclsqlite.c ins Projekt hinzu
    - Setze Seitengröße auf 0x0040 (64)
    - Deaktivere dynamische RTL verwenden
    - Compiliere...

    Resultat sind Fehler ohne Ende.
    Ich habe das jetzt 5 mal komplett von 0 probiert. 😞 😕

    [C++ Fehler] sqliteInt.h(1883): E2141 Fehler in der Deklarationssyntax
    [C++ Warnung] loadext.c(31): W8017 Redefinition von 'sqlite3_column_database_name' ist nicht identisch.
    [C++ Warnung] loadext.c(32): W8017 Redefinition von 'sqlite3_column_database_name16' ist nicht identisch.
    [C++ Warnung] loadext.c(33): W8017 Redefinition von 'sqlite3_column_table_name' ist nicht identisch.
    [C++ Warnung] loadext.c(34): W8017 Redefinition von 'sqlite3_column_table_name16' ist nicht identisch.
    [C++ Warnung] loadext.c(35): W8017 Redefinition von 'sqlite3_column_origin_name' ist nicht identisch.
    [C++ Warnung] loadext.c(36): W8017 Redefinition von 'sqlite3_column_origin_name16' ist nicht identisch.
    [C++ Warnung] loadext.c(37): W8017 Redefinition von 'sqlite3_table_column_metadata' ist nicht identisch.
    [C++ Fehler] loadext.c(123): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(124): E2238 Bezeichner 'sqlite3_api' mehrfach deklariert
    [C++ Fehler] sqliteInt.h(1883): E2344 'sqlite3_api' bereits deklariert
    [C++ Fehler] loadext.c(124): E2356 Redeklaration von 'sqlite3_api' mit anderem Typ
    [C++ Fehler] sqliteInt.h(1883): E2344 'sqlite3_api' bereits deklariert
    [C++ Fehler] loadext.c(124): E2141 Fehler in der Deklarationssyntax
    [C++ Fehler] loadext.c(295): E2190 Unerwartetes }
    [C++ Fehler] loadext.c(295): E2190 Unerwartetes }
    [C++ Fehler] loadext.c(329): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(343): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(356): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(365): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(367): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(381): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(394): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(396): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(410): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(418): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(424): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(448): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(449): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(456): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(465): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(474): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
    [C++ Fehler] loadext.c(474): E2228 Zu viele Fehlermeldungen oder Warnungen

    Kann mir bitte irgendwer einen Tipp geben was ich falsch mache?! 🙄
    Compilerwarnungen 8004,8008 und 8012 habe ich schon auskommentiert.



  • Hallo,

    Warum nimmst du eigentlich nicht die sqlite-amalgamation-3_5_6.zip? Da hast du nur eine c-Datei.



  • Ich mach den exakten selben Weg und erhalte zu viele Warnungen. Deaktivere ein paar über Compiler Einstellung bis er mir letztendlich eine LIB rausspuckt die 846KB gross ist. Diese funktioniert auch tadellos in meinem Testprojekt soweit.

    Problem hierbei ist jedoch, das ich gern die Kryptmöglichkeiten von wxsqlite3 zukünftig nutzen möchte und dieser eine veränderte pager.c ersetzt. Also muss ich schon die komplette Source compilieren können. Ich verstehe garnicht wieso das gestern ging und mir eine 1.53MB LIB ausspuckte. Ich werd noch irre im Kopp.

    Kann vielleicht jemand http://www.sqlite.org/sqlite-source-3_5_6.zip laden und versuchen ne LIB daraus zu erstellen? Wäre echt ne Hilfe und dauert keine Minute 🕶

    Fehlen eventuell Compiler Einstellungen?



  • Ich habs gerade mal gemacht. Es compiliert bei mir relativ problemlos durch (viele Warnungen). Die lib ist ca. 1.5MB groß.



  • Wie muss man das jetzt verstehen? Du hast die sqlite-source-3_5_6.zip (nicht sqlite-amalgamation-3_5_6.zip) erfolgreich zur LIB compiliert? Wie gross issn die geworden?

    Unter BCB5? Wenn jetzt keine geheimen Compiler Einstellungen gemacht hast, müsste das ja bedeuten das der BCB5 nen Bug hat. Anders kann ichs mir nicht erklären.



  • Ja mit sqlite-source-3_5_6.zip. Ich habe den BCB6 genommen, da du dich darauf in der Überschrift bezogen hast. Wenn du willst kann ich aber auch nochmal den 5er nehmen.



  • Das wäre sehr nett von dir, da ich "nur" den BCB5 habe und gern darauf zum laufen bekommen wollen würde.



  • Ok, jetzt hab ichs mit dem BCB5 nochmal durckompiliert. Ging auch problemlos. Es kamen nur die schon bekannten Warnungen. Die tclsqlite.c habe ich nicht mit reingenommen. Die lib ist beim BCB5 ca. 2.7MB groß.



  • Ok, dann scheint es an meiner Unfähigkeit zu liegen.. wo ist die nächste Wand gegen die ich laufen kann? Ich versteh erlich nicht was ich falsch machen könnte.

    Neue Bibliothek starten und speichern, c-Dateien hinzufügen (bis auf tclsqlite.c) und compiliere das mit der TLib einstellung Seitengrösse 64 und ohne vorgehakte dynamische RTL.

    Das schon alles. Wieviele Fehler kann man denn da machen? 😞



  • Nicht viele. 🙂
    Ich mache das fast genau so. Ich habe noch die vorkompilierten Header ausgeschaltet.



  • Oho, dann geht er bei mir auch durch. Danke!! Zwar mit über 100 Warnungen, aber er geht durch und erstellt eine sqlite3.lib welche nur 754KB gross ist. Hatte Compiler auf Entgültige Version gesetzt und so Debugger Infos etc nicht mehr drin. Version klappt auch mit Testprojekt. Warum aber muss man die Header deaktiveren?



  • Bei aktivierten vorkompilierten Headern gibt es Probleme wenn dort Initialisierungen drin sind. Desweiteren fehlen ja hier auch die #pragma hdrstop Anweisungen. Es macht hier sowieso kaum Sinn damit zu arbeiten. So oft kompiliert man diese Lib ja nicht. 🙂



  • Benutzt du SQLite auch, oder hast jetzt nur mal für mich compiliert? 😉



  • Das habe ich nur mal für dich kompiliert. Ich benutze als DB normalerweise Firebird.


Anmelden zum Antworten