2

我有一个 C API,它将双指针传递给其析构函数中的结构,以便在 free 之后也使指针为空。例如:

void freeSomething(Something** foo) {
   free(*foo)
   *foo = null
}

此模式遵循 OpenCV API 的模式,等等。

不幸的是,使用 SWIG 包装这些函数很痛苦,因为 SWIG 创建了一个类型 p_Something 和一个单独的类型 p_p_Something。然后我必须在 SWIG 接口中编写实用程序函数来在这些类型之间进行转换。基本上对于我想要释放的每种类型,我都必须定义:

%{
#include "something.h"
%}
%inline %{
    void swigFreeSomething(Something* foo) {
        freeSomething(&foo);
    }
%}

我有什么方法可以自动为我的所有类型执行此操作或等效的操作吗?也许完全不同的方法?

4

0 回答 0