2011-05-16 36 views
3

我正在开发一个项目,我需要能够运行依赖于SciPy/NumPy的python函数。由于这是正在进行的项目的附加组件,因此使用IronPython将不是一种选择。从C#运行CPython函数#

附加信息:

  • Python.NET似乎是一个不错的选择,但我无法从运行字符串得到的返回值()(它只会返回NULL)。
  • 传递参数并捕获返回值(元组)是必要的。
  • 该函数位于由团队的支持组创建的统计数据包中,因此对其进行修改也是不可能的。

我在相当的损失做什么。任何正确的方向暗示赞赏。谢谢你提供的所有帮助!

我知道这可能很模糊,但我不能给这个项目明确的细节。如果需要澄清,请让我知道,我会尽我所能!

回答

2

我想你可以编写一个使用CPython API公开该函数的DLL,然后在C#中调用它? 可以嵌入Python解释器;虽然我从来没有亲自做过这个,但我猜它会很有用:http://docs.python.org/extending/embedding.html

+0

谢谢!我会调查这一点。 – Eonxre 2011-05-16 20:04:06

1

它需要在Windows之外移植吗?如果没有,也许你可以用C++/CLI嵌入CPython解释器,将它包装在一个漂亮的.Net-ish接口中,并使用C#生成的代码。从来没有尝试过,所以我不知道它是否会起作用。不管你是通过这条路径还是'写一条本地DLL'路线,使用Boost.Python嵌入python可能会更容易一些,不过我不确定你的包装代码是否足够大做所有这些(编译Boost巨兽,学习Boost.Python,确保它可以与C++/CLR协同工作,增加目标文件大小)值得。

+0

谢谢!我会研究一下:) – Eonxre 2011-05-16 20:03:13

1

IronPython using DLR可能是要走的路。请注意,它不会是最快的方式,但如果你要做很多事情,它似乎是值得追求的东西。 Another useful link

+0

谢谢!我会读一下,看看这是否适合我。 – Eonxre 2011-05-16 20:03:33

0

ironclad项目开始允许使用IronPython的CPython扩展,特别是SciPy/NumPy。我不知道它有多可用(以及它是如何被积极开发的)