Hello, Teg, On Fri, Feb 26, 2016 at 11:41 AM, Teg <Teg at djii.com> wrote: > Hello Igor, > > I use Sqlite through a DLL interface. I mean I have another DLL that > includes Sqlite static linked inside it. All opening, closing and > access to Sqlite takes place inside the context of the DLL. The > application never makes Sqlite calls directly. Instead it uses higher > level functions inside the DLL which talk to the Database through > Sqlite.
My structure is just like yours: DLL1 class __declspec(dllexport) Database { public: Database(); virtual ~Database(); virtual int Connect(const char *dbName); }; DLL2: class __declspec(dllexport) SQLiteDatabase : public Database { public: SQLiteDatabase(); virtual ~SQLiteDatabase(); virtual int Connect(const char *dbName); private: sqlite3 *m_db; }; DLL3: extern "C" __declspec(dllexport) Database *ConnectToDB(Database *db) { db = new SQLiteDatabase; return db; } main application: class A { public: A(Database *db) { m_db = NULL; HINSTANCE hInst = LoadLibrary( TEXT( "dialogs.dll" ) ); MYFUNC func = (MYFUNC) GetProcAddress( hInst, "DatabaseProfile" ); m_db = func( db ); } ~A() { } Database *GetDatabase() { return m_db; } private: Database *m_db; }; int _tmain(int argc, _TCHAR* argv[]) { Database *db = NULL, *m_db; A *a = new A( db ); m_db = a->GetDatabase(); delete m_db; delete a; return 0; } Full code is in here: http://stackoverflow.com/questions/35345258/crash-when-disconnecting-from-sqlite-database Is CL suggestion makes sense? Thank you. > I've not attempted to do what you're doing exactly. I don't like > sharing memory across the DLL boundary because I mostly use static > linkage. It causes issues. I'll use allocated memory as handles to a > class inside the DLL but to the caller it's just a black box. The > caller doesn't know what the handle contains (like a file handle). > > > Thursday, February 25, 2016, 10:31:49 AM, you wrote: > > IK> Hi, > IK> I'm trying to design/make a program where I will use SQLite from the DLL. > > IK> What I mean is I will establish a connection inside a DLL but disconnect > from > IK> the database in my main application. > > IK> It turns out that doing so I am getting the crash when I try to > disconnect from > IK> the database file. > > IK> Connecting to the DB and issuing the query works OK and the data is > retrieved. > > IK> I put up some small demo if you need a code to look at. > > IK> Thank you. > IK> _______________________________________________ > IK> sqlite-users mailing list > IK> sqlite-users at mailinglists.sqlite.org > IK> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > -- > Teg mailto:Teg at djii.com >