17

私は現在、作成しているアプリケーションでプロローグコードを実行する必要があります。AppleがAppStoreでこのようなものを許可することはおそらくないだろうと私は知っていますが、それも意図ではありません。これは、AppStoreに到達することのないプライベートプロジェクトです。

目的

この場合、プロローグはオブジェクト(たとえば電話など)とそのプロパティを記述するために使用されます。オブジェクトは、プロローグスクリプトで指定された座標を使用してOpenGLで描画されます。プロローグを使用する理由は、このオブジェクトが持つ機能のいくつかについてプログラムにクエリを実行する機能が必要であり、プロローグはこれを大幅に容易にするためです。結論:アプリからプロローグスクリプトをクエリする必要があります。

可能な解決策

  • Cで書かれた既存の実装を埋め込みます。これが機能するかどうかはわかりません。
  • 別のマシンでプロローグコードを実行し、ネットワークを使用してプロローグを照会します。
  • アプリ内である種のRubyVMを実行することは可能であるようです(私が理解している限り、shinycocosはこれを使用します)、これを使用してRuby Prolog実装の1つを実行できますか?
  • Prologに代わるものを見つけてください。これは私がプロローグで得るのと同じ可能性のいくつかを私に与える必要があります。

悲しいことに、グーグルは私にほとんど結果を与えないので、私はこのプロジェクトでかなり一人でいるかもしれないと感じています。経験や手がかりがあれば、とてもありがたいです。

4

5 に答える 5

6

状況は異なりますが、プロローグコードの呼び出しで同様の問題に直面したため、castorc++ライブラリを確認することをお勧めします。これにより、言語をまったく拡張することなく、ネイティブc++でロジックパラダイムコードを記述できます。castorはヘッダーのみのライブラリであるため、c++が利用可能な場所であればどこでも簡単にコンパイルできます。
Castor Webサイト:http ://www.mpprogramming.com/cpp/default.aspx

于 2010-10-11T16:29:05.457 に答える
6

半年後、私はこれについていくつかの洞察を提供したいと思います。私は結局、Javaでプロローグへのインターフェースを備えたサーバーを作成し、TCPを介してプロローグ呼び出しを受け入れました。これは、ライブプロローグインタープリターSWI-prolog(とりわけ)が提供するものとほぼ同じように機能し、ほとんどの場合非常にうまく機能します。ただし、プロローグ内から関数を呼び出すことはできないため、最適なソリューションにはほど遠いです。あなたは双方向のコミュニケーションを持つ可能性を失います。

最初からやり直すとしたら、iOS用の純粋なC実装の1つをコンパイルするのにもっと一生懸命努力したでしょう。すぐに試してみましたが、経験が不足しているため、発生したすべてのエラーを削除することすらできませんでした。変更されていないバージョンのiOSでもバックグラウンドプロセスとしてプロローグを実行することはできないという事実から判断すると、いくつかの主要な書き直しを行う必要があります。このため、完璧なソリューションを得るには、新しい実装(おそらく、より軽量なもののいくつかに触発されたもの)を最初から作成する必要があるかもしれません。

于 2011-06-13T09:04:57.107 に答える
4

SWI-Prologのソースコードをダウンロードして、iOSプラットフォーム用のXCODEでコンパイルできます。私はそれをしたことがありませんが、それは確かに技術的に可能です。

そうすれば、 C / C ++からプロローグコードを実行する方法の例がたくさんあるので、Objective-Cからプロローグを実行できるようになります。

于 2010-10-11T11:02:37.747 に答える
2

参考までに、JPLを使用すると、JavaとSWI-Prologの間で非常に簡単に双方向で電話をかけることができます。

http://www.swi-prolog.org/packages/jpl/

また、完全に再入可能であるため、Javaからプロローグコードをインスタンス化できます。これにより、Javaコードなどがインスタンス化されます...

数年前、PrologベースのReasoning Engineを多くのJavaコードに接続する必要があったときに、これを多くの商用プロジェクトで行いました。

JNI(Java Native Interface)を使用するため、ネイティブAPIをコンパイルしてリンクする方法に注意する必要があります。ただし、プラットフォームごとに適切にコンパイルすれば、クロスプラットフォームで動作させることができます。OS-X、Windows、Linux、Solarisで動作させました。

于 2012-06-15T12:54:17.650 に答える
1

これが試されたかどうかはわかりませんが、NodeJS forMobileAppsとTauPrologを組み合わせて使用​​する可能性があります。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

于 2020-09-02T09:08:21.417 に答える