モバイルアプリの構築を考えています。私の最初のターゲットは iPad/iPhone デバイスです。Android ターゲットもあると便利です。私はすでに win32 用のアプリケーションをコーディングしてテストしており、最小限の労力でモバイル プラットフォームに移植したいと考えています。
私のアプリケーションは C++ で書かれています。その主な機能は、数式 (スクリプト言語) を表す文字列を解析することです。プラットフォームに依存しないコードを静的ライブラリに分離し、Xcode を使用して iOS 用に正常にコンパイルしました。ライブラリと対話するための UI を追加する必要があります。相互作用は 2 方向で行われます。UI は評価用の文字列式をスタティック ライブラリに送信し、何らかの関数を呼び出して変数値 (主に float と文字列のベクトル (テーブル)) を読み取ります。一方、ライブラリには、テキスト結果を TextView に出力するための外部関数と、いくつかのプロット関数が必要です。
私のUIレイヤーでは、次のような静的ライブラリによってエクスポートされたいくつかの外部「C」関数を呼び出す必要があります。
int ExecuteExpression(char *expression)
void StopExecution()
ライブラリ内で、次のような UI アプリケーションによってエクスポートされたいくつかの外部「C」関数を呼び出す必要があります。
void PrintText(char *text)
void Plot2D(double *x, double *y, int len);
void plot3D(double *x, double *y, double *z, int len);
MoSync IDEを調べましたが、ユーザーが作成した静的ライブラリを呼び出すことはできません。
Marmalade EDKも調べましたが、拡張機能を記述してユーザー定義の静的ライブラリを呼び出す UI を作成する良い方法のようです。最終的なプロジェクトは Xcode 内でコンパイルされ、「C」関数を直接呼び出してライブラリにリンクできる必要があるため、マーマレードのライブラリ関数をラップするために EDK を作成する必要がある理由がわかりません。しかし、Marmalde は iOS UI のネイティブなルック & フィールを提供しますか? マーマレード API を使用して C++ を使用して NSView に直接描画できますか?
プロット関数については、いくつかの選択肢があります。1- ライブラリ内の (RGB) のバッファ イメージで描画し、イメージ データを UI に送信してビュー (NSView) 内に表示します。この場合、プロットとの相互作用は非常に制限されます。プロット ルーチンは、グラフを描画するために行われたすべてのアクションを記憶する必要があるため、View の次元を変更する際の再描画は解決すべき問題です。
2- HTML5/JS 関数を使用して UI レイヤーに描画します。この場合、ライブラリから呼び出すには、HTML5/JS 関数を「Plot2D(double *x, double *y, int len)」のような「C」関数としてエクスポートできる必要があります。データのコピーは UI レイヤーによって保存され、再描画、ズームなどは HTML5/JS コードによって管理されます。これは可能ですか?「C」静的ライブラリから HTML5/JS を呼び出す例はありますか?
3-UIレイヤーから静的ライブラリにプリミティブ描画関数(線、点、長方形、ポリゴンフィル、キャンバスハンドルなど)をエクスポートし、ライブラリにすべてのプロット関数を管理させます。UI は、再描画、ズームなどのためにいくつかのイベントも送信します。
4-あなたが提案する他の解決策。
私の投稿からわかるように、私は C、C++、JS、HTML5、delphi をマスターし、Objective-C と iOS UIkit に関する基本的な知識しか持っていません。そのため、アプリケーションを作成する最も効率的な方法を見つけようとしています。
よろしく、