3

c inlineに基づいて Python コードで使用するためのモジュールを開発していますswignumpyそのために、 で配列にアクセスできるようにしたいと思いますC。今までは C のような型を使用していましたが、 fromunsigned shortのような型を使用して、モジュールが遭遇するコンパイラを保存したいと考えています。uint16_tstdint.h

残念ながら、型c++を使用する場合、関数は正しくラップされませんstdint.h。与えられたエラーは次のとおりです: _setc() takes exactly 2 arguments (1 given)。つまり、関数はnumpy配列を受け入れるようにラップされていません。を使用すると、エラーは発生しませんunsigned short

numpyswigマップ配列をどのように作成できるか、アイデアはありますstdint-typesか?

interface.i動作していません:

/* interface.i */
extern int __g();
%}
%include "stdint.i"
%include "numpy.i"

%init %{
import_array();
%}
%apply (uint16_t* INPLACE_ARRAY3, int DIM1) {(uint16_t* seq, int n1)};
extern int __g();

c++機能しない:

#include "Python.h"
#include <stdio.h>
#include <stdint.h>
extern uint16_t* c;
extern int Dc;
extern int Nc[4];
void _setc(uint16_t *seq, int n1, int n2, int n3)
{
    c = seq;
    Nc[0] = n1;
    Nc[1] = n2;
    Nc[2] = n3;
}

interface.i働く:

/* interface.i */
extern int __g();
%}
%include "stdint.i"
%include "numpy.i"

%init %{
import_array();
%}
%apply (unsigned short* INPLACE_ARRAY3, int DIM1) {(unsigned short* seq, int n1)};
extern int __g();

c++機能作業:

#include "Python.h"
#include <stdio.h>
#include <stdint.h>
extern unsigned short* c;
extern int Dc;
extern int Nc[4];
void _setc(unsigned short *seq, int n1, int n2, int n3)
{
    c = seq;
    Nc[0] = n1;
    Nc[1] = n2;
    Nc[2] = n3;
}
4

1 に答える 1