myTest.cpp:
#include <iostreamの> する#include <ベクトル> クラスのMyTest { パブリック: のMyTest(); 〜のMyTest(); int型 MYTEST(int型 * MYDATA、int型dataNum)。プライベート: }; MyTestに::のMyTest() { } のMyTest ::〜のMyTest() { } int型のMyTest :: MYTEST(INT * MYDATA、INT dataNum) { 場合(dataNum> 0 ) { ため、私は= size_t型(0 ; iはdataNumを<; I ++ ) { * MYDATA = I + 2 。 MYDATA + = 1 ; } } 戻り 0 。 } のextern " C " { MyTestというこのmyobj。 INT MYTEST(INT * MYDATA、INT dataNum) { 戻りmyObj.myTest(MYDATA、dataNum)を、 } }
コンパイル:G ++ testpy.cpp -fPIC -shared -o libtest.so -std = C ++ 11
pythonCallCpp.py:
#!は/ usr / binに/のpython #- * -コーディング:UTF-8 - * - からのctypesをインポート * インポートのctypes INPUT = c_intの* 100 の入力 = INPUT() ので、 = ctypes.cdll.LoadLibraryの LIB =ので、(" は/ opt /fp100/libtest.so " ) 印刷 ' MYTEST(INT * MYDATA、INT dataNum)' lib.myTest(入力、 100 ) プリント入力[0] 印刷入力[1 ] 印刷入力[2 ] 印刷入力[3]
パイソンpythonCallCpp.py結果:
2
3
4
5