我从 here 下载了 SQLite 的 C/C++ 接口(interface)。我得到 4 个源文件 shell.c
、 sqlite3.c
、 sqlite3.h
和 sqlite3ext.h
。
现在我将所有这 4 个文件添加到我的 cocos2d-x 项目中并使用以下代码进行测试:
#include "sqlite/sqlite3.h"
sqlite3 *pDB = NULL;
char * errMsg = NULL;
std::string sqlstr;
int result;
result = sqlite3_open("save.db", &pDB);
if( result != SQLITE_OK )
CCLog( "failed,status_code:%d ,error_msg:%s\n" , result, errMsg );
sqlite3_close(pDB);
然后我运行它。但它构建失败,错误显示如下:我认为这些文件中一定有
main
,才会出现这个错误。我在文件 main
中找到了 shell.c
方法。因为我没有在我的测试代码中包含这个文件,所以我从项目中删除了它。然后我再次运行它。这次构建成功,但是
result
的值是而不是 SQLITE_OK
,它是14(SQLITE_CANTOPEN
),意思是'无法打开数据库文件'。现在我应该怎么做才能正确运行程序?
shell.c
文件是做什么用的,我从项目中删除它是错误的吗?[ 更新 ]
我喜欢它使用以下代码:
string dbPath = CCFileUtils::sharedFileUtils()->getWriteablePath();
dbPath.append("save.db");
CCLog("%s", dbPath.c_str());
result = sqlite3_open_v2(dbPath.c_str(), &pDB, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL);
代替result = sqlite3_open("save.db", &pDB);
最佳答案
从您的项目中删除 shell.c。它是使用 sqlite 数据库的 cli 工具。它定义了 main() 因为它是可执行的。
关于你问题的第二部分 sqlite3_open: "unable to open database file"
关于c++ - 如何在 XCode 的 cocos2d-x 项目中使用 sqlite3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14931013/