none
Sqlite3 in C++ Komponente RRS feed

  • Allgemeine Diskussion

  • Hallo.

    Ich versuche, eine C++ Komponente für WinRT zu schreiben. Diese soll mit sqlite3_open eine Datenbank erstellen/öffnen. Ich nutze hierzu die SDK Version von SQLite3. Alles scheint korrekt zu sein, trotzdem hängt der Compiler bei dem Doppelpointer. Wer kann dazu etwas sagen?

    #include "pch.h"
    #include <winsqlite/winsqlite3.h>

    using namespace Platform;

    ref class sqlite sealed{

        sqlite3 **ppdb;
        const char16 *filename = L"Schach.db";

    public:

        void open()
        {
           sqlite3_open16(filename, ppdb);
        }
        void close()
       {
            sqlite3_close(*ppdb);
        }
    };

    Und die Fehlermeldung:

    Fehler LNK2019 Verweis auf nicht aufgelöstes externes Symbol "_sqlite3_open16" in Funktion ""public: void __cdecl sqlite::open(void)" (?open@sqlite@@Q$AAAXXZ)". TestSQLite C:\Users\peter\documents\visual studio 2015\Projects\TestSQLite\TestSQLite\MainPage.xaml.obj 1 

    Dienstag, 18. Oktober 2016 23:22

Alle Antworten

  • Hallo Peter,

    aus dem Bauch heraus, sollte es eher so aussehen:

    sqlite3 *pdb;
    
    void open()
    {
       sqlite3_open16(filename, &pdb);
    }

    denn  beim Open wird die Adresse von pdb übergeben, damit dort der Zeiger auf die sqlite Klasse abgelegt wird. Siehe auch Beispiele wie den Quickstart.

    Gruß Elmar

    Mittwoch, 19. Oktober 2016 07:41
  • Danke Elmar. Die Seite ist mir bekannt. Die Definition im SDK SQLite sieht etwas anders aus. Kann man einsehen mit rechter Maustaste über der Funktion und Definition einsehen im Kontextmenü (Visual Studio).

    SQLITE_API int SQLITE_STDCALL sqlite3_open16(

        const void *filename,   /* Database filename (UTF-16) */
        sqlite3 **ppDb          /* OUT: SQLite db handle */
    );

    Die Definition von der Quickstart-Page wird aber auch akzeptiert und führt zum gleichen Fehler.


    • Bearbeitet Peter 3 Mittwoch, 19. Oktober 2016 21:08
    Mittwoch, 19. Oktober 2016 20:59