gpt4 book ai didi

python - 在 SWIG 中处理结构数组

转载 作者:行者123 更新时间:2023-12-01 05:51:38 25 4
gpt4 key购买 nike

我正在尝试包装一个需要向其传递结构数组的 C 函数。

我的 .i 文件中的函数定义是:

extern HRESULT WINAPI ScriptItemize(
const WCHAR *pwcInChars, // In Unicode string to be itemized
int cInChars, // In Codepoint count to itemize
int cMaxItems, // In Max length of itemization array
const SCRIPT_CONTROL *psControl, // In Analysis control (optional)
const SCRIPT_STATE *psState, // In Initial bidi algorithm state (optional)
SCRIPT_ITEM *pItems, // Out Array to receive itemization
int *pcItems); // Out Count of items processed (optional)

结构体 SCRIPT_CONTROL、SCRIPT_STATE 和 SCRIPT_ITEM 均已在 .i 文件中预先定义。

我可以通过包含以下几行来指示 pcItems 是返回值:

%include <typemaps.i>
%apply int *OUTPUT {int *pcItems};

但是,尝试对 pItems 执行相同的操作:

%apply SCRIPT_ITEM *OUTPUT {SCRIPT_ITEM *pItems};

我收到此警告:

Can't apply (SCRIPT_ITEM *OUTPUT). No typemaps are defined.

如何指示 pItems 是返回值?

另外,如何从 Python 中创建 SCRIPT_ITEM 结构数组?

最佳答案

我已经设法通过更改我的 .i 文件来找到执行此操作的方法,如下所示:

%include <carrays.i>

%array_class(SCRIPT_ITEM, SCRIPT_ITEM_ARRAY);

extern HRESULT WINAPI ScriptItemize(
const WCHAR *pwcInChars, // In Unicode string to be itemized
int cInChars, // In Codepoint count to itemize
int cMaxItems, // In Max length of itemization array
const SCRIPT_CONTROL *psControl, // In Analysis control (optional)
const SCRIPT_STATE *psState, // In Initial bidi algorithm state (optional)
SCRIPT_ITEM_ARRAY *pItems, // Out Array to receive itemization
int *pcItems); // Out Count of items processed (optional)

关于python - 在 SWIG 中处理结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com