python呼び出しC+,伝達int,char,char*,配列および多次元配列
1684 ワード
//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)