4

http://www.icodeblog.com/2011/04/07/creating-static-libraries-for-ios/を通過した後、静的ライブラリを作成しました。このライブラリをテストするために、新しいプロジェクトを作成し、静的ライブラリをプロジェクトにドラッグして、その1つのメソッドをテストしようとしました。しかし、「「_ OBJC_CLASS _ $ _ MyLib」、参照元:」というエラーが表示されます。MyLibは、私が作成したライブラリの名前です。

静的ライブラリを作成する際に行った手順。1.新しいXcodeプロジェクトを作成しました。2.オプションを選択して、cocoatouch静的ライブラリを作成します。3. MyLib.hで2つの関数を記述し、1つはフィボナッチ数列用、もう1つは数値の階乗を生成するための実装を記述しました。3.プロジェクトをビルドし、ファインダーに表示する部分を含むMyLib.aファイルをクリックして書き込みます。4.MyLib.aファイルとMyLib.hをMyLibという新しいフォルダーにドラッグします。

助けてください

4

3 に答える 3

13

iOS 用のライブラリ、フレームワーク、またはアプリケーションをビルドする場合、XCode は、ターゲットのビルド設定で指定されたアーキテクチャのオブジェクト コードのみをコンパイルします。また、XCode は、指定されたアーキテクチャが組み込まれているバイナリにのみリンクします。

XCode でターゲットを選択すると、ビルド設定タブの下にターゲットのアーキテクチャが表示されます。arm6、arm7、i386 などの値が含まれます。

iOS シミュレータでコードを実行すると、i386 アーキテクチャであるデスクトップでコードが実行されます。

デバイスで実行する場合、バイナリにはそのアーキテクチャ用に構築された「スライス」があります。正しいアーキテクチャ「スライス」がバイナリに存在しない場合、実行されません。

simluator で iOS アプリケーションを実行しているときに i386 アーキテクチャが見つからないというエラーが発生した場合は、アプリケーションとそのすべての依存ライブラリが i386 アーキテクチャ用にビルドされていることを確認する必要があります。

また、ターゲットのビルド設定で「アクティブなアーキテクチャのみをビルドする」が NO に設定されていることを確認します。

ソースがないために依存ライブラリを再構築できない場合は、arm6 または arm7 アーキテクチャをサポートするデバイスでテストする必要があります。

于 2012-11-05T11:11:11.900 に答える
2

以下のようにcppファイルにacヘッダーを追加しようとしたときに同じ問題が発生しました

//in c++ header file
#import "cHeader.h"

長い苦労の末、cppファイルにcヘッダーをインポートするには、これを行う必要があることを知りました:

//in c++ header file
extern "C"{
    #import "cHeader.h"
}

そして私の問題は解決しました。

于 2013-07-08T05:07:25.837 に答える
1

私はまったく同じ問題を抱えていましたが、このスレッドの回答を読んだときに、最終的に Xcode 4.5 と iOS 6 で動作させることができました。@idz による回答はうまく機能しますが、アプリのプロジェクトにライブラリのプロジェクトを含めて、それを依存関係として設定する必要があるのは理想的ではありません。

ステップ 1 から 8 は非常に単純で明示的です。また、ヘッダー検索パスのプロジェクト設定が正確であることを確認する必要があります。幸運を!

XCode 4.3: 静的ライブラリの生成

于 2012-11-18T01:36:57.790 に答える