zoukankan      html  css  js  c++  java
  • python 调用c++类方法(1)

    myTest.cpp:

    #include<iostream>
    #include<vector>
    
    class MyTest
    {
    public:
        MyTest();
        ~MyTest();
        int myTest(int* myData, int dataNum);
    
    private:
    
    };
    
    MyTest::MyTest()
    {
    }
    
    MyTest::~MyTest()
    {
    }
    
    int MyTest::myTest(int* myData,int dataNum)
    {
        if (dataNum>0)
        {
            for (size_t i = 0; i < dataNum; i++)
            {
                *myData = i + 2;
                myData += 1;
            }
        }
    
        return 0;
    }
    
    
    extern "C" {
    
        MyTest myObj;
    
        int myTest(int* myData, int dataNum)
        {
            return myObj.myTest(myData, dataNum);
        }
    
    }

     编译生成:g++ testpy.cpp  -fPIC -shared -o libtest.so -std=c++11

    pythonCallCpp.py:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    from ctypes import *
    import ctypes
    
    INPUT = c_int * 100
    input = INPUT()
    
    so = ctypes.cdll.LoadLibrary   
    lib = so("/opt/fp100/libtest.so")   
    print 'myTest(int* myData, int dataNum)'  
    
    lib.myTest(input, 100)  
    
    print input[0]
    print input[1]
    print input[2]
    print input[3]

     python pythonCallCpp.py     结果:

    2
    3
    4
    5

  • 相关阅读:
    14:求满足条件的3位数
    1696:逆波兰表达式
    筛法求素数 6分
    1751:分解因数
    1750:全排列
    1788:Pell数列
    666:放苹果
    06:寻宝
    04:最匹配的矩阵
    雷电
  • 原文地址:https://www.cnblogs.com/lovebay/p/11264073.html
Copyright © 2011-2022 走看看