gpt4 book ai didi

python - 在 Python 中,如何使用 C++ 函数通过 ** 参数返回分配的结构数组?

转载 作者:太空狗 更新时间:2023-10-30 00:04:18 25 4
gpt4 key购买 nike

我想使用一些现有的 C++ 代码,NvTriStrip , 在 Python 工具中。

SWIG 可以轻松处理具有简单参数的函数,但主要函数 GenerateStrips 复杂得多。

我需要在 SWIG 接口(interface)文件中放入什么来表明 primGroups 确实是一个输出参数并且必须用 delete[] 清除它?

///////////////////////////////////////////////////////////////////////////
// GenerateStrips()
//
// in_indices: input index list, the indices you would use to render
// in_numIndices: number of entries in in_indices
// primGroups: array of optimized/stripified PrimitiveGroups
// numGroups: number of groups returned
//
// Be sure to call delete[] on the returned primGroups to avoid leaking mem
//
bool GenerateStrips( const unsigned short* in_indices,
const unsigned int in_numIndices,
PrimitiveGroup** primGroups,
unsigned short* numGroups,
bool validateEnabled = false );

仅供引用,这是 PrimitiveGroup 声明:

enum PrimType
{
PT_LIST,
PT_STRIP,
PT_FAN
};

struct PrimitiveGroup
{
PrimType type;
unsigned int numIndices;
unsigned short* indices;

PrimitiveGroup() : type(PT_STRIP), numIndices(0), indices(NULL) {}
~PrimitiveGroup()
{
if(indices)
delete[] indices;
indices = NULL;
}
};

最佳答案

您是否看过 SWIG 关于其“cpointer.i”和“carray.i”库的文档?他们被发现here .除非您想创建自己的实用程序库来配合包装代码,否则这就是您必须操作事物的方式。这是使用 SWIG 处理指针的 Python 链接。 .

关于让它识别输入与输出的问题。他们在文档中有另一个部分 here ,正是这样描述的。您在 *.i 文件中标记了 OUTPUT。所以在你的情况下你会写:

%inline{
extern bool GenerateStrips( const unsigned short* in_dices,
const unsigned short* in_numIndices,
PrimitiveGroup** OUTPUT,
unsigned short* numGroups,
bool validated );
%}

它为您提供了一个将 bool 和 PrimitiveGroup* 数组作为元组返回的函数。

这有帮助吗?

关于python - 在 Python 中,如何使用 C++ 函数通过 ** 参数返回分配的结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897717/

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