ここから SQLite 用の C/C++ インターフェイスをダウンロードします。shell.c
そして、sqlite3.c
、 、sqlite3.h
およびの4 つのソース ファイルを取得します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 :
/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: アーキテクチャ i386 のシンボルが 1 つ重複しています。clang: エラー: リンカ
コマンドは終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)
main
これらのファイルには、このエラーが発生する必要があると思います。そしてmain
、ファイルでメソッドを見つけますshell.c
。このファイルはテスト コードに含めていないため、プロジェクトから削除します。
その後、もう一度実行します。今回はビルドに成功しましたが、 の値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);