2

質問の短いバージョン:

したがって、基本的に私がやろうとしているのは、C で記述された既存のライブラリ ( https://github.com/lsalzman/enet ) を取得し、それを iOS 用の静的ライブラリに変換することです。

Xcodeでこれを達成する方法を段階的に理解しやすいものを探しています。

長いバージョン:

Objective-C ( http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial ) で記述された単純な静的ライブラリを作成するためのチュートリアルをいくつか確認しました。そこで何が起こっているのか理解できますが、C で書かれた既存のコードでこれを行う方法を理解できていません。

近づいていると思いますが、よくわかりません。

  1. まず、xcode で「Cocoa Touch Static Library」プロジェクトを作成します。
  2. すべてのenet .hおよび.cファイルを追加します
  3. ビルド設定の「ユーザーヘッダー検索パス」にenetが含まれていることを確認してください。
  4. ビルドをヒット - コンパイルされます!

生成された .a ファイルは 517kb なので、この時点で enet をビルドしていると確信しています。

ただし、現在の私の問題は、ライブラリのヘッダー ファイルが基本的に空であることです。

#import <Foundation/Foundation.h>

@interface enet_ios : NSObject

@end

私は、enet ライブラリと通信する Objective-C でラッパーを作成する必要があると考えています。または、enet.h がこのライブラリへの「エントリ ポイント」であり、xcode の pre-生成された .h/.m ファイル。しかし、それを行う方法がよくわかりません。理想的には、任意の種類のラッパーをスキップして、enet ライブラリが既に提供しているものを使用したいと思います。

ご覧いただきありがとうございます。

4

1 に答える 1

1

質問、目的の C 構文/オブジェクト指向表記を使用して関数を呼び出そうとしていますか? 次に、ラッパーオブジェクトが必要です。それを回避する方法はありません。

しかし、IOS/Objective C で完全に受け入れられる C 関数を直接呼び出すことができる場合は、enet ライブラリからヘッダー ファイルを確認する必要があります (共有した github リンクにある include ディレクトリにあるもの)。 ) も静的ライブラリと共に配布されます。これはスタティック ライブラリの制限です。*.a を使用してコピーできますが、静的ライブラリと共にコピーする必要があります。これは、開発者が Apple の IOS 用ツールで簡単に作成できない .H とアセットを含むフレームワークとは異なります。

Objective C を使用したライブラリ管理はそれ自体が苦痛であり、静的ライブラリはこれや他の多くの理由から課題であることがわかりました。もう 1 つの提案は、間違いなくよりエレガントでポータブルですが、個人的な使用には少しやり過ぎです。プロジェクトを cocoapod として構築することです。これを行うには、プロジェクトをフォークして cocopods に変換します。cocopods や AFNetworking のような他の OSS でプロジェクト構造がどのように見えるべきかについては、多くの例があります。これは、人々が IOS ライブラリを作成する際の事実上の標準的な方法のようです。詳細については、 http://cocoapods.org/を参照してください。これには、ポッドとしてソース コードが含まれ、ターゲット アプリケーションに対してコンパイルされます。

これが、自分のライブラリとサードパーティのライブラリを扱う唯一の方法です。ライブラリがココアポッドを使用しない場合、私はライブラリを使用しないか、それをフォークして自分でポッドにします....

于 2014-07-17T16:20:14.180 に答える