1

基本的に、xcode4 で静的ライブラリを作成してコンパイルすることはできますが、関数は otool によって読み込まれません。私はそれがうまくいくように一度それを行うことができましたが、それ以来何度も失敗しているので、明らかなステップを逃しているに違いないことを知っています.

私が現在行っていることは、xcode4 で新しいビュー ベースのアプリケーションを作成することです。次に、新しいターゲット (Numbers) を Numbers に追加し、File.c というソース ファイルを追加します。その内容は次のとおりです。

static int Get10()
{
    return 10;
}

次に、それをコンパイルします (ビルド スキームのドロップダウンで Numbers |iPhone 4.3 Simulator が選択されていることを確認します)。

しかし、libNumbers.a で otool -S を実行すると、結果が得られません。

ranlib 構造体のサイズ: 0 (数値 0) オブジェクト オフセット 文字列インデックス

正しくビルドされた libNumbers.a で otool -S を実行すると、0 の代わりにいくつかの数値が得られるため、そこに何かがあるはずです。

ranlib 構造体のサイズ: 16 (数値 2) オブジェクト オフセット文字列インデックス 136 0 136 7

私が作成した成功したlibコンパイルで行ったことをバックトレースしようとしましたが、関数がそのライブラリでコンパイルされた理由を示すものは何も見つかりませんでした。

4

1 に答える 1

3

static関数が定義されている翻訳単位の外で関数を使用する場合は使用しないでください。代わりに、そのstatic部分を省略して関数の外部リンケージが必要です (関数のデフォルトは外部リンケージです)。

于 2011-07-25T13:05:30.853 に答える