I have structure in Python code and in C code. I fill these fields
("bones_pos_vect",((c_float*4)*30)),
("bones_rot_quat",((c_float*4)*30))
in python code with the right values, but when I request them in C code, I get only 0.0 from all array cells. Why do I lose the values? All other fields of my structures work fine.
class SceneObject(Structure):
_fields_ = [("x_coord", c_float),
("y_coord", c_float),
("z_coord", c_float),
("x_angle", c_float),
("y_angle", c_float),
("z_angle", c_float),
("indexes_count", c_int),
("vertices_buffer", c_uint),
("indexes_buffer", c_uint),
("texture_buffer", c_uint),
("bones_pos_vect",((c_float*4)*30)),
("bones_rot_quat",((c_float*4)*30))]
typedef struct
{
float x_coord;
float y_coord;
float z_coord;
float x_angle;
float y_angle;
float z_angle;
int indexes_count;
unsigned int vertices_buffer;
unsigned int indexes_buffer;
unsigned int texture_buffer;
float bones_pos_vect[30][4];
float bones_rot_quat[30][4];
} SceneObject;
Here’s an example of how you can use a multidimensional array with Python and ctypes.
I wrote the following C code, and used
gccin MinGW to compile this toslib.dll:Note that the struct contains a ‘two-dimensional’ array.
I then wrote the following Python script:
When I ran the Python script, it called the C function, which printed out the contents of the multidimensional array:
I’ve used Python 2, whereas the tags on your question indicate that you’re using Python 3. However, I don’t believe this should make a difference.