Python调用C++如何返回数组

在使用ctypes库调用c++函数时,若要返回数组,可以通过restype来指定,使用示例如下所示:

C++示例代码:

extern "C" {
    bool* odd_func(int arr[], int n){
        bool* odds = new bool[n];
        for(int i=0;i<n;i++){
            odds[i] = arr[i] % 2;
        }
        return odds;
    }
}

编译命令:

g++  -fPIC -shared test.cpp -o test.so

python使用示例:

import ctypes

lib = ctypes.CDLL("./test.so")

odd_fun = lib.odd_func
n = 5
arr = (ctypes.c_int * n)()
arr[:] = [1, 13, 4, 9, 6]
odd_fun.restype = ctypes.POINTER(ctypes.c_bool * n)
res = [i for i in odd_fun(arr, n).contents]
print(res)
# [True, True, False, True, False]
c++
175 views
Comments
登录后评论
Sign In