iOS->Framework&Library->Cocoa Touch Static Library
xcode 4.6を使用してオブジェクト C 静的ライブラリを構築する方法を知っています。このチュートリアルの助けを借りて簡単に作成できますiOS チュートリアルで静的ライブラリを作成します。ただし、io アプリケーション用の純粋な C++ スタティック ライブラリをビルドして使用する方法はよくわかりません。C++ スタティック ライブラリをビルドする場合も iOS->Framework&Library->Cocoa Touch Static Library
ガイドラインを使用します。相違点は、スタティック ライブラリ プロジェクトを作成するときにすべての .h ファイルと .m ファイルを削除してから、すべての C++ スタティック ライブラリ ヘッド ファイルと実装ファイルをプロジェクトに配置することです。 . 非常に簡単な例は次のとおりです。
こんにちは。
#include <iostream>
void say_hello();
こんにちは.cpp
#include "hello.h"
void say_hello()
{
std::cout<<"hello"<<std::endl;
}
hello.a
動作しているようで、 iPhone 6.1 Simulator 用の静的ライブラリをビルドできます。次のステップは、静的ライブラリを呼び出すアプリケーションを構築することです。シンプルな iPhone 6.1 シミュレーターを作成し、次のコードを使用して、ファイル内の静的ライブラリーiOS application->Single View Application
を呼び出し ます (C++ 関数を呼び出すことができるように、ViewController.m を ViewController.mm に変更します)。hello.a
ViewController.mm
say_hello();
ただし、1 つの警告と 2 つのエラー メッセージを受け取りました。
警告:
ld: warning: ignoring file hello.a, file was built for archive which is not the architecture being linked (i386):
エラー 1:
hello.a
Undefined symbols for architecture i386:
"say_hello()", referenced from:
-[ViewController viewDidLoad] in ViewController.o
エラー 2:
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
次に、この実験に関連するいくつかの質問があります。
- 純粋な C++ 静的ライブラリを作成するのは正しい方法ですか?
C++ スタティック ライブラリを呼び出す方法に何か問題がありますか?
私の例では、静的ライブラリを呼び出すときに、どうすればリンク エラーを解決できますか?
どうもありがとう。