我正在尝试包装一个需要将结构数组传递给它的 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 结构数组?