2016-09-28 10 views
0

私は、iOSプロジェクトで使用する静的ライブラリとしてXcodeでSQLiteをコンパイルしようとしています。プロジェクトはマルチプラットフォームであり、SQLiteが使われるC++で書かれた共通部分が1つあります。だからこそ私はiOS標準には合いません。SQLite thread_safeモードを正しく設定するには

私はライブラリをコンパイルしてコード内で使用すると、モード1を設定してもsqlite3_threadsafe()が2を返します。 "Other C Capses"フィールドにモードを設定しました。フラグDSQLITE_THREADSAFE問題である可能性は何= 1

Xcode Build Settings

を書き込むことによって、Xcodeで設定を作りますか?私はすべてを試しましたが、明らかに何かが欠けているようです。

答えて

0

デフォルトでは、XcodeはSqliteがマルチスレッドおよびシリアルモードをサポートするようにコンパイルします。したがって、コンパイラフラグを使用する必要はありません。代わりに、sqlite3 *インスタンスを初期化する前にコード内で有効にする必要があります。

sqlite3_shutdown(); 
if (sqlite3_threadsafe() > 0) { 
    int retCode = sqlite3_config(SQLITE_CONFIG_SERIALIZED); 
    if (retCode == SQLITE_OK) { 
     NSLog(@"Can now use sqlite on multiple threads, using the same connection"); 
    } else { 
     NSLog(@"setting sqlite thread safe mode to serialized failed!!! return code: %d", retCode); 
    } 
} else { 
    NSLog(@"Your SQLite database is not compiled to be threadsafe."); 
} 
sqlite3_initialize(); 
関連する問題