我的计划:
我正在尝试设置我的 C# 项目以与 Nodebox 通信以调用某个函数来填充图形并将其绘制在新窗口中。
当前情况:[已修复...见更新2]
我已经包含了所有需要的 python 模块,但我仍然得到一个
Library 'GL' not found
似乎该pyglet
模块需要对 的引用GL/gl.h
,但由于 IronPython 的行为而无法找到它。
要求:
该项目需要在不安装新软件包的情况下保持尽可能小。这就是为什么我将所有模块复制到项目文件夹中并希望以这种方式或类似方式保留它。
我的问题:
我的问题是否有某种解决方法或库文件夹不匹配的修复方法。已阅读有关但找不到好的解决方案的一些Tao-Opengl
文章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'
修复它有点痛苦。正在更新结果...
更新3:
通过在 C#-Code 的第一行之后添加以下行来修复:
setup.Options["Frames"] = true;
当前问题:
No module named unicodedata
, 但 inPython26/DLLs
只是一个*.pyd
文件`。那么..我现在如何实现它?!
更新4:
通过冲浪修复:链接文本并添加unicodedata.py
和'.pyd
到 C# Projectfolder。
当前问题:
'libGL.so not found'...伙计们..我几乎放弃了nodebox for C#..待续
更新5:
我放弃了:/ 解决方法:c# 通过 xml 和 filesystemwatchers 与 nodebox 通信。不是最优的,但案例已解决。