1

私は C と Quake 3 / ioquake エンジンを使用しています。これはゲーム エンジン固有の質問ではなく、純粋に C 言語のクエリであることに注意してください。

g_entitiesエンジンでグローバルに定義された変数です。externこの変数のステートメントも使用されます。

エンジン内の他の多数の.cファイルは問題なくこの変数を呼び出しますが、コードからこれを実行すると、undefined reference to g_entitiesコンパイル時にリンカー エラーが発生します。

私のコード:

// get entity information for this bot (e.g. health etc)
gentity_t *entity;
entity = &g_entities[1];

メイク時のエラー:

/home/george/Desktop/ioquake/ioquake-latest/ioquake3/code/botlib/be_ai_char.c:1196: undefined reference to `g_entities'

C の第一人者が解決策を教えてくれるかもしれないアドバイスをいただければ幸いです。ありがとう。

4

2 に答える 2

6

これはヘッダー ファイルの問題ではありません。g_entities の定義を含むオブジェクトにリンクする必要があります。これは、オブジェクト ファイルまたはライブラリである可能性があります。リンクする順序によっても違いが生じることがあります。

g_entities がどこに定義されているか知っていますか? 他のコードはこのシンボルを参照していますが、どのように解決しますか? それは何とリンクしていますか?

于 2013-04-22T01:35:15.293 に答える
1

g_entities (extern なし) を実際に定義するモジュールが、リンカへの入力のセット (およびそれを参照する他のすべてのモジュールの可能性が最も高い) にないためですか?

于 2013-04-22T01:30:26.450 に答える