2014-11-20 37 views
0

我试图从IronPython中调用.NET函数(VS2012)从IronPython的调用函数的.Net [VS2012]

.NET功能:

public int GetData(uint numberOfSamples, float[] iBuffer, float[] qBuffer){..} 

IronPython的:

# Here's my code in IronPython 
numSamples = 1024 
from array import array 
iData = array('f') 
qData = array('f') 

GetData(numSamples, iData, qData) 

最后一行将抛出以下异常,(从本地窗口-VS2012)

enter image description here

我该如何解决这个问题?

+1

在IronPython中的浮点数相当于C#中的两倍 - 也许这是问题。参考:http://research.microsoft.com/en-us/um/cambridge/projects/infernet/docs/calling%20infer.net%20from%20ironpython.aspx – NoChance 2014-11-20 17:07:09

+0

我也试过'array('d' )',但我得到同样的错误。 – SanVEE 2014-11-20 17:08:52

回答

2

可以传递的floats数组(这是System.Single)这样的:

iData = System.Array[System.Single]([1.0, 2.0, 3.0]) 
qData = System.Array[System.Single]([4.0, 5.0, 6.0]) 
GetData(numSamples, iData, qData) 

编辑:如果你想预分配数组,并没有实际的Python内容,用途:

iData = System.Array.CreateInstance(System.Single, 1024) 
+0

谢谢帕维尔,这一个似乎工作,但我想定义一个数组的大小,而不是值,是否有可能? – SanVEE 2014-11-21 10:22:44

1

虽然我接受Pawals答案,我结束了使用这样

iData = Array.CreateInstance(System.Single, 1024) 
qData = Array.CreateInstance(System.Single, 1024) 

我从这个article发现。

+1

我想我们是在同一时间研究:-) – 2014-11-21 15:08:09