zoukankan      html  css  js  c++  java
  • Python调用C++

    /***gcc -o libpycall.so -shared -fPIC pycall.c*/  
    #include <stdio.h>  
    #include <stdlib.h>  
    int foo(int a, int b)  
    {  
      printf("you input %d and %d
    ", a, b);  
      return a+b;  
    }  
    

     Python调用动态库的文件:pycall.py

    import ctypes  
    ll = ctypes.cdll.LoadLibrary   
    lib = ll("./libpycall.so")    
    lib.foo(1, 3)  
    print '***finish***'  
    

    Python调用C++(类)动态链接库 

           需要extern "C"来辅助,也就是说还是只能调用C函数,不能直接调用方法,但是能解析C++方法。不是用extern "C",构建后的动态链接库没有这些函数的符号表。

    #include <iostream>
    using namespace std;
    
    class TestLib
    {
        public:
            void display();
            void display(int a);
    };
    void TestLib::display() {
        cout<<"First display"<<endl;
    }
    
    void TestLib::display(int a) {
        cout<<"Second display:"<<a<<endl;
    }
    extern "C" {
        TestLib obj;
        void display() {
            obj.display(); 
          }
        void display_int() {
            obj.display(2); 
          }
    }
    

     g++编译生成动态库libpycall.so:g++ -o libpycallclass.so -shared -fPIC pycallclass.cpp。
    Python调用动态库的文件:pycallclass.py

    import ctypes
    so = ctypes.cdll.LoadLibrary 
    lib = so("./libpycallclass.so") 
    print 'display()'
    lib.display()
    print 'display(100)'
    lib.display_int(100)
    

     转载:http://blog.csdn.net/taiyang1987912/article/details/44779719

  • 相关阅读:
    oracle执行.sql文件
    rematch的基本用法
    dva的基本用法
    redux-saga基本用法
    react-redux的基本用法
    redux的基本概念
    mobx基本概念
    centos 编译安装Apache 2.4
    javascript动态添加一组input
    php配置文件语法
  • 原文地址:https://www.cnblogs.com/mypsq/p/6114838.html
Copyright © 2011-2022 走看看