Как получить доступ к указателю с плавающей точкой в ​​структуре C через созданную SWIG оболочку Python - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть структура C с полем float*.Он считается массивом поплавков, которые изображают изображение.Структура C является частью библиотеки, которую я обертываю с помощью SWIG.Это в значительной степени работает.Я могу импортировать модуль и создавать экземпляры этой структуры (и других).

Структура выглядит примерно так:

struct MyStruct {
    int width;
    int height;
    float* data;
};

Я хотел бы заполнить этот массив из моего кода Python, например

import Foo

d = Foo.MyStruct()
d.data = numpy.zeros(640*480)

Это не работает изкоробка.Я получаю TypeError с указанием:

in method 'MyStruct_data_set', argument 2 of type 'float *'

во внутреннем методе SWIG с именем _swig_setattr_nondynamic

Я полагаю, что мне придется что-то сделать с указателем, чтобы сделатьПонятно, что это массив с плавающей точкой произвольного размера.

Что мне нужно сделать, предположительно в файле модуля .i, чтобы код, приведенный выше, работал?

/ edit:в соответствии с просьбой, файл .i не более того:

%module Foo
%{
#include <Foo.h>
%}

%include Foo.h

Довольно простой.Я совершенно новичок в SWIG.

...