2

ターミナルでうまく機能する C で作成されたコンソール アプリケーションがあります。しかし、私はそれをiPhoneに移植する必要があります。そのため、ターミナルを模倣して応答する GUI を作成する必要があります。したがって、基本的にはデータを入力し、コンソール アプリケーションから出力 (printf) を取得する必要があります。この C アプリケーションは Router に接続するため、GUI を実装する方法があるかどうかはわかりません。おそらく、コンソール アプリから出力を受け取るテキスト フィールドです。問題は、iPhoneには端末がなく、CアプリはXcodeで適切にコンパイルされ、iPhoneにもロードされるということです。しかし、端末がないので..「接続中..」のようなものを出力するだけですが、接続が完了すると...切断されます。対話する端末が見つからないためだと思います。-MobileTerminal- を試してみましたが、そのアプリはジェイルブレイクされた iPhone でしか動作しないので、そうしたくありません。

助言がありますか ??

4

1 に答える 1

3

まずはiPhoneアプリを作ります。それに応じて UI などを作成します。

次に、C ファイルをプロジェクトに追加し、そこでロジックを実行します。main() はアプリのエントリ ポイントではないため、コード ロジックを変更してメソッドに整理する必要があります。

3 番目に、ロジックを使用する場所に作成した C ファイルへの参照を追加します。

最後に、メソッドを直接呼び出すだけです。


ここに私が試した小さな例があります:

  1. iPhone のシングル ビュー プロジェクト getCNumber を作成しました。

  2. プロジェクトに Number.h と Number.m の 2 つのファイルを追加しました。

Number.h:

  #include <stdio.h>

  int getNum();

Number.m:

  #include "Number.h"

  int getNum()
  {
      return 234;
  }


3. In getCNumber.xib, I have a label.

getCNumber.h で、

    #import <UIKit/UIKit.h>

    @interface getCNumber : UIViewController
    {
         UILabel *lblNum;
    }

    @property (nonatomic, retain) IBOutlet UILabel *lblNum;

    @end

getCNumber.m、-(void)viewDidLoad()、

    - (void)viewDidLoad
   {
          [super viewDidLoad];
      // Do any additional setup after loading the view, typically from a nib.

          int someNum = getNum();
          self.lblNum.text = [NSString stringWithFormat:@"Number from C: %i",someNum];

    }

C プログラムで iOS の「ラッパー」を使用するには、追加の作業が必要になる場合があります。これは、C で何を行ったか正確にはわかりませんが、ここでの一般的な考え方を示しているはずです。

それが役に立てば幸い。

于 2012-07-20T18:09:45.613 に答える