Python+;自由pascal中的Numpy模

Python+;自由pascal中的Numpy模,python,numpy,freepascal,delphi,Python,Numpy,Freepascal,Delphi,在免费的pascal中为Python开发模块(.pyd)相当容易,请参阅。但是如果我想与numpy接口,这并不是那么容易。 使用C与numpy接口时,必须向代码中添加#include,并调用import_array() 有没有办法在pascal中与numpy接口 EDIT1 如@wilberforce answer下的注释所述,头文件中定义的import_array函数只是将multiarray.pyd模块导入当前解释器并进行一些检查。它很容易翻译成帕斯卡,而且很有效 numpy C-API函数

在免费的pascal中为Python开发模块(.pyd)相当容易,请参阅。但是如果我想与numpy接口,这并不是那么容易。 使用C与numpy接口时,必须向代码中添加
#include
,并调用
import_array()

有没有办法在pascal中与numpy接口

EDIT1

如@wilberforce answer下的注释所述,头文件中定义的
import_array
函数只是将multiarray.pyd模块导入当前解释器并进行一些检查。它很容易翻译成帕斯卡,而且很有效

numpy C-API函数最初不在pythonXX.dll中,因此它们不能静态链接。与multiarray.pyd的静态或动态链接不适用于我


因此,最新的问题是:有没有一种方法可以从非C的代码中访问嵌入在multiarray.pyd中的C-API函数?

从Pascal的角度来看,将numpy库与任何其他C库一样对待-您需要包含头并将import_array声明为一个
外部
函数

包括细节


为了编写Python扩展模块,您已经需要完成其中的一些工作,以便Pascal代码可以使用Python API函数与Python对象交互。您可以在
cdecl中看到这一点;体外PythonLib链接到的示例中的修改器。可能您在执行此操作时不清楚。

问题在于:(1)
import\u array
arrayobject.h
中声明,并且它包括,(2)在python dll中没有声明任何numpy函数,以及(3)对外部函数使用
multiarray.pyd
不起作用。
import\u array
映射到函数
\u import\u array
,该函数本质上导入numpy模块。如果我用pascal重写这个函数,它可能会工作。哦,我明白了-他们在生成的头文件中定义了一个静态的导入数组-这太糟糕了!(虽然我相信他们有他们的理由。)看起来你必须用Pascal重新实现它——这应该是一个相当机械的翻译。您甚至可以将它作为头类型文件返回给numpy,生成的方式与刚刚发现的delphi的'delayed'关键字相同,它允许您根据需要从外部库(d2010+)加载函数。它可以在这种情况下工作。我只使用免费的pascal,所以在它实现之前。。。