2011-01-02 2 views
4

내 계획 : 나는 그래프를 채우고 새 창에서 무 특정 함수를 호출 할 Nodebox와 통신하기 위해 설정 내 C# 프로젝트를 시도하고은 IronPython과 Nodebox

.

현재 상황 : [고정 ... 갱신 2 참조]

이미 모든 파이썬 모듈이 필요 포함,하지만 메신저는 여전히이

Library 'GL' not found

보인다 점점

pyglet 모듈 요구하는 GL/gl.h에 대한 참조이지만 IronPython 동작으로 인해 찾을 수 없습니다.

요구 사항 :

이 프로젝트는 새로운 패키지를 설치하지 않고 가능한 한 작게 유지해야합니다. 그게 전부 내 모듈을 프로젝트 폴더에 복사하고 그 또는 그와 비슷한 방식으로 유지하려는 이유입니다.

내 질문 :

내 문제에 대한 어떤 해결 방법 또는 라이브러리 폴더 missmatch에 대한 수정이 있습니다. Tao-OpenglOpenTK에 대한 기사를 읽었으나 좋은 해결책을 찾을 수 없습니다.

갱신 1 :

작은 pyglet 창 렌더링 예를 들어 내 소스 코드를 업데이트했습니다. 문제는 pyglet과 참조 된 c-Objects에 있습니다. C# 프로젝트에 이들을 포함시켜 어떻게 호출합니까? 지금까지는 아무 생각이 없다 ... 지금 실험하고있다. 업데이트 유지.

에 SampleCode 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); 

에 SampleCode 파이썬 (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이 win32가 아닙니다 ... 오류가있었습니다. 단지 줄을 사용하여 고정 :

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

이제 다음 오류 : 고통의

'module' object has no attribute '_getframe' 

종류가 그것을 해결하기 위해. 결과로 업데이트 중 ...

갱신 3 :

오른쪽 C# 1 -code에서 첫 번째 행 후 다음 행을 추가하여 수정 :

setup.Options["Frames"] = true; 

현재 문제점 : Python26/DLLs

No module named unicodedata하지만, 단지 인 *.pyd 파일`입니다. 그래서 .. 어떻게 지금 구현합니까?!

Update4 : 서핑하여 고정

: link text 및 C# Projectfolder에 unicodedata.py'.pyd 추가.

현재 문제 :

은 '을 (를) 찾을 수 없습니다 libGL.so'... 사람은 ... 메신저 거의 C# .. 계속 될

Update5에 대한 nodebox 포기 :

나는 포기했다 :/workaround : xml과 filesystemwatchers를 통해 nodebox와 통신하는 C#. 최적은 아니지만 사례가 해결되었습니다.

+0

'_getframe'에 대한 다음 기사가 있습니다. http://ironpython.codeplex.com/workitem/1042?ProjectName=ironpython 그리고 나는 아직도 그것을 고치는 법을 모릅니다 .. -X : 프레임 옵션은 무슨 뜻입니까? – proxylittle

답변

0

-X : 프레임을 사용하면 프레임 옵션을 런타임으로 사용할 수 있습니다 (코드를 조금씩 늦추어 파이썬 프레임에 항상 액세스 할 수 있음). 대신 당신이 지금 통과하고있는 널의

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

을 : 당신은 그냥 할 필요가 호스팅하는 경우

프레임을 활성화합니다. 이것은 방금 "frames"라는 내용이 true로 설정된 옵션 사전에 대한 새 사전을 만드는 것입니다. 거기에 다른 옵션을 설정할 수 있으며, 일반적으로 -X : Name 옵션은 명령 행과 동일합니다.

+0

도움이되는 답변이 더 좋고 대답이 없습니다. 나는 그것을 받아 들일 것이다. – proxylittle