2009-07-23 16 views
1

私は、WordNetを使用してユーザー入力の言語分類を行い、データベースのPrologバージョンを使用したいと考えています。C#とプロローグの統合

私はP#を試しましたが、これはうまくいきますが、WordNetデータベースのサイズを処理できないようです。それは私が使用したいファイル(218 kB)の中で最小のものをコンパイルすることができますが、2つの大きなファイル(それぞれ2.3と7.3 MB)をコンパイルしようとすると約30分の作業の後に失敗し、何か問題が発生しました。レポートをMicrosoftに送信しますか?ダイアログ。

私もProlog.Netを試しましたが、これはうまく動作しないようです。

最後にSWI-PrologのC# bindingsを試しましたが、正常に動作させることができませんでした。サンプルコードを実行しようとすると、PLEngine.Initialise()のステップで失敗します。ロードしようとしているもの(無効なWin32アプリケーション(BadImageFormatException)です)を要求します。

誰かがC#とPrologを統合するための他の方法の提案を持っているのですか、あるいは私がすでに動作させようとしてきた解決策を得るための提案はありますか? OSはWindowsサーバー2008(64ビット)、SWI Prologはバージョン5.7.11です。

+0

エラーから私は多分あなたは32-64ビットの競合を持っていると推測しています、多分32ビットのものとしてすべてをコンパイルして何が起こるかを見てみてください。 –

+0

より多くの選択肢をリストアップした同様の質問:http://stackoverflow.com/questions/181855/integrating-prolog-with-c – ThomasH

+0

ちなみに、マーティンの答えを与えて、x64を使ってP#をコンパイルしてみましたか? – Enigmativity

答えて

1

おそらく、64ビットWindows上の32ビットSWI-Prologに問題があります。プラットフォームのターゲットがの場合CPUこれは問題の原因である可能性があります。これを修正するには、C#プロジェクトのプロパティページを開きます。 Buildタブを選択し、プラットフォームターゲットx86に変更します。

現在使用している場合任意のCPUあなたのアプリケーションは64ビットWindowsで64ビットで動作します。 32ビットのDLLを読み込もうとしても悲惨に失敗します。

+0

ありがとう! x86に変更すると修正されました(自分で試してみたはずです)。今、Prologを使用する部分は、より大きなプロジェクトの一部にすぎません。このプロジェクトの目標をx86に変更すると、すべてがx86をターゲットにする必要がありますか.Netはこれを何とかして魔法のように保存しますか? – arnsholt

+0

x86をターゲットにすると、アプリケーション全体が32ビットで動作します。 SWI-Prologは32ビットなので、これを行う必要があります。私は心配することはありません。あなたはおそらく開発ツールとしてVisual Studioを使用しており、それも32ビットで動作しています。あなたがアプリケーションに何らかの手段で通信する複数のプロセスが関わっている場合は、32ビットと64ビットで動作するプロセスを持つことはもちろん可能です。 –