5

使用免费的 pascal 为 Python 开发一个模块 (.pyd) 相当容易,请参阅使用 Pascal 开发 Python 模块。但是如果我想与 numpy 交互,这并不容易。使用 C 与 numpy 接口时,必须#include <numpy/arrayobject.h>在代码中添加,还要import_array();在初始化函数中调用。

有没有办法在帕斯卡中与 numpy 交互?

编辑1

正如@wilberforce 答案下的评论import_array中所述,头文件中定义的函数只是将 multiarray.pyd 模块导入当前解释器并进行一些检查。它很容易翻译成帕斯卡并且可以工作。

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

所以更新的问题是:有没有办法从不是 C 的代码中访问嵌入在 multiarray.pyd 中的 C-API 函数?

4

1 回答 1

1

从 Pascal 的角度来看,像对待任何其他 C 库一样对待 numpy 库 - 您需要包含头文件并将 import_array 声明为external cdecl函数。

本指南涵盖了详细信息。

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

于 2013-11-14T11:42:08.537 回答