1

私はこれに困惑しています.... SQLiteは別のプロジェクトであり、ワークスペースの一部です。ターゲットをビルドするとき、LLVM は不平を言っています:

<path>/sqlite3.c:44924:24: Incomplete definition of type 'struct Btree'

それは 44924 行目 (および 44924 に続く 14 か所) にあります。他に私が見ているものは次のとおりです。

7145: /* Forward declaration */
7146: typedef struct Btree Btree;
...

11378: struct Btree {
11379:   sqlite3 *db;       /* The database connection holding this btree */
11380:   BtShared *pBt;     /* Sharable content of this btree */
11381:  u8 inTrans;        /* TRANS_NONE, TRANS_READ or TRANS_WRITE */
11382:  u8 sharable;       /* True if we can share pBt with another db */
11383:  u8 locked;         /* True if db currently has pBt locked */
11384:  int wantToLock;    /* Number of nested calls to sqlite3BtreeEnter() */
11385:  int nBackup;       /* Number of backup operations reading this btree */
11386:  Btree *pNext;      /* List of other sharable Btrees from the same db */
11387:  Btree *pPrev;      /* Back pointer of the same list */
11388:#ifndef SQLITE_OMIT_SHARED_CACHE
11389:  BtLock lock;       /* Object used to lock page 1 */
11390:#endif
11391:};
...

44919: static void lockBtreeMutex(Btree *p){
44920:   assert( p->locked==0 );
44921:   assert( sqlite3_mutex_notheld(p->pBt->mutex) );
44922:   assert( sqlite3_mutex_held(p->db->mutex) );
44923: 
44924:   sqlite3_mutex_enter(p->pBt->mutex);
44925:   p->pBt->db = p->db;
44926:   p->locked = 1;
44927: }

また、構造体の名前を 11378 に変更してみましたstruct Btree_S(そして を変更しましたtypedef)。同じ問題。

私の質問は、どうすれば不完全になるのでしょうか? 何か案は?

4

2 に答える 2

2

sqlite3.cが C++ ではなく C としてコンパイルされていることを確認します。

于 2012-11-11T10:23:53.900 に答える
0

答えが見つかりました.... プリプロセッサ マクロSQLITE_HAS_CODEC=1が定義されていませんでした。なぜ定義されなかったのですか?Xcode 4のため: プロジェクトはワークスペースの $(inherited) ビルド設定を尊重しませんか? .

$(inherited)Xcode 4 では、親子関係にあるプロジェクト全体で期待どおりに機能しません (IDE のツリー ビューに表示される内容にもかかわらず) $(inherited)

Xcode 構成ファイル (xcconfig) も期待どおりに機能しません。他の子プロジェクト (最上位プロジェクトのみ) に割り当てられた構成ファイルを取得できませんでした。

Apple は、QA 部門とテクニカル ライターを全員解雇し、新しい ID10T を大量に雇うべきです。

于 2012-11-12T03:23:25.810 に答える