Search code examples
c++visual-studiosqlitecocos2d-xcocos2d-x-3.0

Error when trying to compile using sqlite3_open in Visual Studio 2013


I'm working in a Cocos2dx (c++) win 32 project and trying to use sqlite to save the game data. My knowledge of c++ / Visual Studio is very limited right now.

This is part of the code that I'm trying to compile.

#include <sqlite3\include\sqlite3.h>
...
void HelloWorld::SaveAndLoadTest()
{
 sqlite3 *pdb = NULL;    
 sqlite3_open("writablePath", &pdb);
 ...
}

But when I try to compile the line with the sqlite3_open command I get the following error:

Error 7 error LNK2019: unresolved external symbol _sqlite3_open referenced in function...

I've been trying to find an answer for this many hours. The most similar question I found was this one but I don't understand the answer. Error: undefined reference to `sqlite3_open'

You need to link the sqlite3 library along with your program:

g++ main.cpp -lsqlite3

I'm new to Visual Studio and I don't understand how to solve this, anyone?


Solution

  • The error LNK2019 means that references are missing probably because a library is mising.

    To add sqlite to a MSVC project, you have to make sure that:

    • the header is included in your source files
    • sqlite3.dll is in the path or in the directory of the executable
    • AND that sqlite3.lib is added to the additional dependencies in the VS project (options of the project > Linker > Input > Additional dependencies)

    This last point is mandatory, because the lib tells the linker which functions are stored in the dll.