python呼び出しC+,伝達int,char,char*,配列および多次元配列



//C++ファイル
#include
using namespace std;
//ファイル名:cpptest.cpp
//端末下コンパイル命令:
//g++ -o cpptest.so -shared -fPIC cpptest.cpp
//-o生成されたファイル名を指定し、-sharedはマイクロ共有ライブラリを指定し、-fPICはアドレス依存コードの使用を示す
extern"C"{//extern"C"の関数を外部から呼び出すことができます
    int test(int int_test,char char_test,char *test_string,int int_arr[4],char char_arr2[2][2]) {
        cout<
        cout<
        cout<
        cout<
cout<<「出力パラメータの文字char*文字:」;
        cout<
cout<<「出力パラメータのint配列」;
        for(int x = 0;x< 4;x++){cout << int_arr[x]<
        cout << endl;
        cout <
        for(int x = 0;x<2;x++){
            for(int y = 0;y<2;y++){
            cout <
            }
        }
        cout << endl;
        return 0;
    }
}
 
 
 
//pyファイル
import ctypes
mylib = ctypes.cdll.LoadLibrary("cpptest.so")
char_p_test=bytes("中国","utf 8")#漢字はutf 8符号化を採用する必要がある
int_arr4 = ctypes.c_int*4
int_arr = int_arr4()
int_arr[0] = 1
int_arr[1] = 3
int_arr[2] = 5
int_arr[3] = 9
char_arr2 = ctypes.c_char*2
char_arr22 = char_arr2*2
char_arr22a = char_arr22()
char_arr22a[0][0] = b'a'
char_arr22a[0][1]=  b'b'
char_arr22a[1][0] = b'c'
char_arr22a[1][1] = b'd'
mylib.test(9999,'a',char_p_test,int_arr,char_arr22a)