gpt4 book ai didi

c++ - 如何在 XCode 的 cocos2d-x 项目中使用 sqlite3

转载 作者:太空狗 更新时间:2023-10-29 21:46:32 25 4
gpt4 key购买 nike

我从 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);

然后我运行它。但是构建失败,错误如下所示:

duplicate symbol _main in:

/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 duplicate symbol for architecture i386 clang: error: linker

command failed with exit code 1 (use -v to see invocation)

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

然后我再次运行它。这次构建成功,但是result的值是NOT 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com