首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cocos2d-x项目中使用sqlite3

如何在cocos2d-x项目中使用sqlite3
EN

Stack Overflow用户
提问于 2013-02-18 06:59:18
回答 1查看 2.7K关注 0票数 3

我从SQLite下载C/C++接口。我得到了4个源文件shell.csqlite3.csqlite3.hsqlite3ext.h

现在,我将所有这4个文件添加到cocos2d-x项目中,并使用以下代码进行测试:

代码语言:javascript
复制
#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在: /Users/tangyue/Library/Developer/Xcode/DerivedData/CrossKaiser-bkepfijxelboxkchsxvcmpozrwlt/Build/Intermediates/CrossKaiser.build/Debug-iphonesimulator/CrossKaiser.build/Objects-normal/i386/main.o /Users/tangyue/Library/Developer/Xcode/DerivedData/CrossKaiser-bkepfijxelboxkchsxvcmpozrwlt/Build/Intermediates/CrossKaiser.build/Debug-iphonesimulator/CrossKaiser.build/Objects-normal/i386/shell.o ld: 1体系结构的重复符号i386 clang:错误:链接器 命令失败,退出代码1(使用-v查看调用)

我认为这些文件中一定有一个main,它会发生这个错误。我在文件main中找到了shell.c方法。因为我没有将这个文件包含在我的测试代码中,所以我将它从项目中删除。

然后我再做一次。这一次,它成功了,但是result的值是而不是 SQLITE_OK,它是14(SQLITE_CANTOPEN),意思是“无法打开数据库文件”。

现在我该怎么做才能正确地运行这个程序?shell.c文件用于什么,从项目中删除它是错误的吗?

更新

我使用了以下代码:

代码语言:javascript
复制
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);

而不是

代码语言:javascript
复制
result = sqlite3_open("save.db", &pDB);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-18 07:12:29

从项目中删除shell.c .c。它是使用sqlite数据库的cli工具。它定义main()是因为它是可执行的。

关于你问题的第二部分,打开:“无法打开数据库文件”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14931013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档