问题标签 [python-c-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
generator - 将生成器功能添加到 Python/C 类
我已经使用 Python/C API 在 C 中构建了一个类。我现在需要遍历 C blob 中的数据项。返回 PyList 是不可取的,因为长度 > 50K。有没有办法提供类似生成器的功能?
我的一个解决方案是将类包装在另一个纯 python 类中,并在该级别编写生成器函数。还有其他方法吗?
c++ - 使用 PowerBuilder 10.0 错误从 DLL 调用外部函数
我使用 Visual C++ 2008 创建了一个 DLL,它创建了两个外部函数。使用 python,我创建了两个单独的可执行函数来运行它们。使用 PowerBuilder 调用该函数时,第一个可执行文件运行良好。第二个可执行文件导致运行时错误:error calling external function %s
. 我使用一个.def
文件,并且每个函数都有正确的序数。有什么建议吗?
C 中的函数声明如下(抱歉,它们很长):
在 powerbuilder 中,外部函数声明是:
start_grain_size 导致错误
python - 将 Python 嵌入到 C 中 - 导入模块
根据文档,我在使用适用于 C 的嵌入式 Python 时遇到问题- 每当我尝试使用导入的模块时,我都会得到:
PythonIncl.exe 中 0x1e089e85 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000004。
错误发生在PyObject_GetAttrString()
方法中,文档没有太大帮助。我也尝试过使用IBM示例中的教程,但总是遇到相同的访问冲突。
以下是我似乎无法开始工作的教程之一的示例代码,这里有什么问题?
C 代码(在一个主文件中):
Python 代码(在名为 reverse.py 的文件中,位于同一文件夹中):
我正在使用 MSVS2008、Python 2.7 运行 XP 机器
一点上下文:我正在尝试在一个相当大的 C 程序中嵌入一个使用 OpenOPC 的小型 python 脚本,并希望在两者之间传输数据。但是,我已经在基本示例的概念验证测试中失败了。
python - 为什么 Python 函数会被垃圾收集?
我有一个使用 Python 回调的 C++ 库。回调,即 PyObject*,存储在 UnaryFunction 类的对象中,构造函数 Py_INCREF 对其进行引用。析构函数 Py_XDECREFs 它。那就是问题所在。解释器在该 DECREF 上出现段错误。
我的解决方案是不 DECREF 它,但这似乎是错误的。INC/DEC 函数引用计数的正确方法是什么,更重要的是,为什么解释器在有其他实时引用时尝试 GC 函数体?
编辑:在 Linux 而不是段错误上,我得到一个断言失败,上面写着:
python: Objects/funcobject.c:442: func_dealloc: Assertion 'g->gc.gc_refs != (-2)' failed.
c++ - 将 python + numpy 代码嵌入到 C++ dll 回调中
我是 python 嵌入的新手。我正在尝试将 python + numpy 代码嵌入到 C++ 回调函数中(在 dll 中)
我面临的问题如下。如果我有:
一切正常。
但如果我有:
这在第二次到达 _import_array() 时崩溃;(意味着它适用于第一个回调)
如果我只进行一次python和numpy初始化并在析构函数中完成(因此不是每次初始化/完成),离开回调时一切都会崩溃..
我猜这里的问题是numpy,但我不知道如何解决它
python - Python C API 不加载模块
我正在尝试使用 C API 在 C 中加载一个包含数学和 numpy 导入的 python 模块。我可以加载并运行该模块,但是,如果我导入数学模块,它就不起作用。
我正在使用 Arch Linux、Python 2.7.2 和 gcc。
这里的代码:
函数.py
以及如何在不需要使用脚本的情况下将 Python 脚本嵌入到 C 中?
python - Numpy C-Api 示例给出了 SegFault
我试图了解 Python C-Api 的工作原理,并且我想在 Python 和 C 扩展之间交换 numpy 数组。
所以,我开始了这个教程:http ://dsnra.jpl.nasa.gov/software/Python/numpydoc/numpy-13.html
尝试在那里做第一个例子,一个计算二维 numpy 数组轨迹的 C 模块,对我来说非常整洁,因为我也想在二维数组中进行基本操作。
该模块的名称是 trace,它是使用 setup.py 文件编译的:
该文件已编译,trace.so 在 IPython 中导入,但是当我尝试使用方法 trace() 时,我得到一个 Segmentation Fault,我不知道为什么。
我使用 Fedora 15、Python 2.7.1、gcc 4.3.0、Numpy 1.5.1 运行它
python - PyArray_BOOL 声明和使用 C 扩展中的 Numpy 布尔数组
我的代码中有一个 NumPy 布尔数组,我希望向其编写 C 扩展。当我尝试获取一个连续数组以便在我的 C 例程中使用时,我使用:
但是我得到了 PyArray_BOOL 没有声明的编译器错误。
为什么会这样?这种类型是未声明的吗?如果是这样,我如何将我的布尔数组引入C?
谢谢!
python - 将 PyArrayObject 数据类型转换为 C 数组
我想在 C 扩展中使用我的 Numpy 数组。这种情况下的很多例子都使用了 PyArrayObject 的结构,
array->data , array->strides[0] , array->strides[1] , ...
指针以访问数据,如果我想以我更熟悉(或更整洁)的方式访问我的数组,索引如下
array[i][j]
我应该怎么做?我应该对 (bool *) array->data 进行类型转换并使用我创建的 C 数组吗?(我的元素是布尔值)
我现在的函数声明是(当然还没有完成)
谢谢!
python - CApi 中的 PyArg_ParseTuple SegFaults
我正在编写代码,试图习惯 NumPy 数组的 C API。
这是一个精简版。我只想能够获得一个类型的对象PyArrayObject
并将其返回。不幸的是,这也给出了 SegFault。
Linux,64 位,Python 2.7.1