我从 here 下载了 SQLite 的 C/C++ 接口(interface)。我得到 4 个源文件 shell.csqlite3.csqlite3.hsqlite3ext.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/

10-16 04:34