您的位置:首页 > 编程语言 > C语言/C++

python 调用C++,传递int,char,char*,数组和多维数组

2018-03-21 11:19 169 查看
//C++文件#include<iostream>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<<"输出参数中的int型:";        cout<<int_test<<endl;        cout<<"输出参数中的char型:";        cout<<char_test<<endl;        cout << "输出参数中的字char*字符:";        cout<<test_string<<endl;        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 <<char_arr2[x][y] << "    ";            }        }        cout << endl;        return 0;    }}   //py文件import ctypesmylib = ctypes.cdll.LoadLibrary("cpptest.so")char_p_test = bytes("中国","utf8")#汉字需用采用utf8编码int_arr4 = ctypes.c_int*4int_arr = int_arr4()int_arr[0] = 1int_arr[1] = 3int_arr[2] = 5int_arr[3] = 9char_arr2 = ctypes.c_char*2char_arr22 = char_arr2*2char_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) 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: