2016-03-07 144 views
1

所以我想混乱一点,只是为了学习和东西,但现在我得到一个错误,“sqlite3_api”没有定义。C++ sqlite3 api没有定义(Visual Studio 2015)

#include "stdafx.h" 
#include "sqlite3.h" 
#include "sqlite3ext.h" 

using namespace std; 

#define DB "dumpshit.s3db" 

bool isOpenDB = false; 
sqlite3 *db; 

bool ConnectDB(); 

bool ConnectDB() 
{ 
    if (sqlite3_open(DB, &db) == SQLITE_OK) 
    { 
     isOpenDB = true; 
     return true; 
    } 

    return false; 
} 

这就是现在在测试文件中的字面意思。我还将sqlite3.c添加到我的源文件中,并将sqlite3.h + sqlite3ext.h添加到我的头文件中。

为什么我得到那个错误信息?

+0

除非这不是C++,否则您需要一个'main'过程。包括** exact **错误消息也是必需的。你需要回答这个问题,为什么你*“将sqlite3.c添加到你的源文件”*。你不需要那个。你有预编译的二进制文件。 – IInspectable

+0

删除#include“sqlite3ext.h” – ravenspoint

+0

主程序的意思是“int main(int argc,char ** argv)”?因为没有那个错误信息,我甚至没有那么远。正如我所说,上面的代码几乎是一切.. //编辑: 删除包括它,非常感谢。 –

回答

0

不需要包含sqlite3ext.h文件。 只需包含sqlite3.h文件并将sqlite3.c文件添加到源文件文件夹中并编译程序,该程序将被执行而不会出现任何错误。

这里是我写的示例代码和它的工作:

#include <sqlite3.h> 
#include <stdio.h> 

int main(void) 
{ 
sqlite3 *db;  
sqlite3_stmt *res; 
int rec; 
/* Opening Database. */ 
int rec = sqlite3_open("test.db", &db); 
/* Preparing the query */  
sqlite3_prepare_v2(db, "create table tb1 (col1 text, col2 text, col3 int)", -1, &res, 0); 
/* Evaluating the statement. */ 
sqlite3_step(res);  
/* Closing Database. */ 
sqlite3_close(db); 

return 0; 
} 

希望它帮助.. !!