Bonjour,

j'ai une petite fonction C que j'utilise depuis python:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
#include <stdio.h>
 
void foo_func(long* x, int length)
{
    int i;
    for (i = 0; i < length; i++) {
        x[i] = i*i;
    }
}
Dans mon script python, je passe le pointeur d'un numpy.array en argument de la fonction, ce qui me permet de modifier depuis le code c les valeurs de mon array.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import numpy as np
from ctypes import *
 
mpa_lib = np.ctypeslib.load_library('mpa', '/home/.../mpa.so')
 
array_1d_int = np.ctypeslib.ndpointer(dtype='int', ndim=1, flags='CONTIGUOUS')
 
mpa_lib.foo_func.argtypes = [array_1d_int, c_int]
mpa_lib.foo_func.restype = None
 
 
out = np.arange(6)
print out
mpa_lib.foo_func(out, len(out))
print out
Si maintenant je passe un array deux dimensions (ndim=2, shape=(2,3)), y a t il un moyen pour que dans le code C, j'accède aux éléments comme par double indice comme pour un tableau C multidimensions classique: tableau[1][2] ?

Merci d'avance