4

私の計画:

Nodebox と通信してグラフを作成し、新しいウィンドウに描画する特定の関数を呼び出すように C# プロジェクトをセットアップしようとしています。

現在の状況: [修正済み... Update2 を参照]

必要なすべての python-modules を既に含めましたが、まだ

Library 'GL' not found

pygletモジュールには への参照が必要なようですがGL/gl.h、IronPython の動作が原因で見つかりません。

要件:

新しいパッケージをインストールせずに、プロジェクトをできるだけ小さくする必要があります。そのため、すべてのモジュールを project-folder にコピーし、それを保持したい、または同様の方法で保持したいと考えています。

私の質問:

私の問題に対する特定の回避策や、ライブラリ フォルダーの不一致の修正方法はありますか。Tao-Openglandに関するいくつかの記事を読みましOpenTKたが、適切な解決策が見つかりません。

アップデート1:

小さな pyglet ウィンドウ レンダリングの例でソースコードを更新しました。問題は pyglet と参照された c-Objects にあります。呼び出される C# プロジェクトにそれらを含めるにはどうすればよいですか? 今のところわかりません...少し実験しています。最新情報をお届けします。

サンプルコード C#:

ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(null);
ScriptRuntime runtime = new ScriptRuntime(setup);
ScriptEngine engine = Python.GetEngine(runtime);

ScriptSource source = engine.CreateScriptSourceFromFile("test.py");
ScriptScope scope = engine.CreateScope();
source.Execute(scope);

サンプルコード Python (test.py):

from nodebox.graphics import *
from nodebox.graphics.physics import Vector, Boid, Flock, Obstacle

flock = Flock(50, x=-50, y=-50, width=700, height=400)
flock.sight(80)

def draw(canvas):
    canvas.clear()
    flock.update(separation=0.4, cohesion=0.6, alignment=0.1, teleport=True)
    for boid in flock:
        push()
        translate(boid.x, boid.y)
        scale(0.5 + boid.depth)
        rotate(boid.heading)
        arrow(0, 0, 15)
        pop()

canvas.size = 600, 300

def main(canvas):
    canvas.run(draw)

アップデート2:

139行目 [pyglet/lib.py] sys.platform is not win32... エラーが発生しました。次の行を使用して修正しました:

from pyglet.gl.lib_wgl import link_GL, link_GLU, link_WGL

今、次のエラー:

'module' object has no attribute '_getframe'

それを修正するのはちょっと面倒です。結果を更新しています...

Update3:

C# コードの最初の行の直後に次の行を追加することで修正されました。

setup.Options["Frames"] = true;

現在の問題:

No module named unicodedata、しかし inPython26/DLLsはファイルのみ*.pydです`. だから..どうすれば今それを実装できますか?!

アップデート4:

サーフィンによって修正:テキストをリンクし、C# Projectfolder に and をunicodedata.py追加します。'.pyd

現在の問題:

「libGL.so not found」... みんな.. C# の nodebox をあきらめそうになっている.. 続行する

アップデート5:

私はあきらめました:/回避策: XMLおよびファイルシステムウォッチャーを介してノードボックスと通信するc#。最適ではありませんが、問題は解決しました。

4

1 に答える 1

0

-X:Framesは、実行時にフレームオプションを有効にします(Pythonフレームに常にアクセスできるようにするには、コードが少し遅くなります)。

ホスティング時にフレームを有効にするには、次のことを行う必要があります。

ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(new Dictionary<string, object>() {
    { "Frames", true }
});

あなたが今渡しているヌルの代わりに。これは、コンテンツ「フレーム」がtrueに設定されたオプションディクショナリの新しいディクショナリを作成するだけです。そこに他のオプションを設定することもできます。一般に、-X:Nameオプションは、ここではコマンドラインの場合と同じです。

于 2011-01-05T02:59:57.847 に答える