6

C++コードをiOSに移植する必要があり、元のC++コードで静的ライブラリを構築し、そのライブラリをiOSにロードしようとしています。元のコードは重いため、小さなテストを開始して、手順が機能するかどうかを確認します。

まず、文字列を出力するライブラリ (.a) をビルドする必要があります。次のコードをコンパイルし、ライブラリ (.a) ファイルを生成します

//talk.h
...
#include <iostream>
class Talk {
    Talk();
    void printHello();
    void printWord(char*);
};


//talk.cpp
#include "talk.h"
using namespace std;
void Talk::printHello() {
    cout << "Hello World";
}
void Talk::printWord(char* word) {
    cout << "Hello" << word;
}

私がやろうとしている 2 番目のステップは、iOS アプリ用の新しいプロジェクトを開き、ライブラリ ファイルへのリンクを設定し、対応する "talk.h" ヘッダー ファイルも含めることです。ただし、ライブラリを正常にビルドしても、ヘッダー ファイルでいくつかのエラーが発生します。

エラーは、

  1. 「iostream」ファイルが見つかりません
  2. 「不明な型名 'class'; 'Class' のことですか?
  3. その他のエラー...

controller.m の名前を controller.mm に変更しようとしましたが、問題は解決しません。

iOS でライブラリを使用するために C++ で記述されたヘッダー ファイルをインポートする方法は? ありがとう

4

3 に答える 3

4

大まかな概要:

Xcode で (テンプレート iOS アプリケーション プロジェクトのいずれか (または既存のもの) から開始):

  • 新しい静的ライブラリ ターゲットを作成しますFile -> New -> Target.... Framework Or Libraryを選択し、次にCocoa Touch Static Libraryを選択します。
  • ライブラリ ソース コードの追加: ライブラリ ソース コードを Xcode プロジェクトにドラッグします。表示されるダイアログで、上記で作成したビルド ターゲットを選択します。
  • プロジェクトの依存関係をライブラリに追加: [プロジェクト ナビゲーション] で [プロジェクト] を選択し、[ターゲット] から iOS ビルド ターゲットを選択します。[ビルド フェーズ] タブを選択し、ウィンドウの [対象の依存関係] で+記号をクリックします。シートが開き (追加するアイテムを選択)、ライブラリ ターゲットがリストの一番上に表示されます。
  • ライブラリを iOS ターゲットに含める: [バイナリをライブラリにリンク] で、[+] をクリックします。ライブラリ (.a ファイル) がリストの一番上にあるはずです。
  • libc++ とのリンク: 上記の手順と同様。リストからlibc++を選択します。
  • 拡張子を .m から .mm に変更して、ライブラリ ヘッダーを含める必要があるソース コード ファイルのObjective-C++ コンパイルを有効にします。
  • iOS アプリケーション ターゲットをビルドします。

Xcode は、コンパイラ フラグやヘッダー検索パスなど、他のすべての設定を自動的に行います。

于 2015-03-20T22:09:04.807 に答える
0

最初の部分では、C++ は Xcode で適切にコンパイルされます。簡単なチュートリアル http://tutorialsios.blogspot.com/2013/09/c-beginers-code-for-objective-c.htmlを作成しました。 これらのコードは、Xcode を使用して作成され、コンパイルされました。ターミナルで

#include "functionOverLoading.h"
int main(int argc, const char * argv[]) {
..
..
       return 0;
    }

$g++ functionOverLoading.cpp –o functionOverLoading

$ ./functionOverLoading

于 2013-10-23T02:42:28.330 に答える
0

C++ 標準ライブラリを追加する必要があります。

これを行うには、プロジェクトでその他のリンカー フラグを見つけて追加し-lstdc++ます。

于 2013-10-23T02:59:24.360 に答える