python 调用c++

找了一些python调用c++的方法,发现Python提供了ctypes这个包,可以很容易的使用Python直接调用C语言实现的接口,这使得开发的工作量大大降低,只是ctypes是基于libffi实现的跨语言封装,性能上可能会比使用C Extending来得慢一些。转载下,原文链接:http://blog.csdn.net/kuaile123/article/details/11024873


由于Python的ctypes可以使python轻松调用动态链接库,从而调用c/c++程序。利用gcc编译c++文件为动态链接库dll或者so文件,再利用python来调用。

1、下载gcc

系统为win7 X32,下载windows版本 MinGW,下载地址:http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/

下载Download mingw-get-setup.exe (86.5 kB) (注意这是win32 的版本)

进行安装:

选择默认安装目录 C:\MinGW;

选择安装组件,如果没有出现这个窗口,点击快速启动栏,点击MinGW Installation Manager,一定选上安装The GUN C++ Compiler和The GUN Objectiv-C Compiler。

完成之后退出,将C:\MinGW\bin 添加到环境变量。设置完成后,Windows似乎不会自动更新环境变量,除非重启机子,那么我们可以通过在下面的命令行中,胡乱设置一下PATH(比如SET PATH=C:\),然后退出命令行,那么系统环境变量就会被强制刷新。

点击cmd,输入 g++ v 可以查看编译器版本。

 

2、编译c++

新建一c++文件:如test1.cpp

[html]  view plain  copy
  1. #include<iostream>    
  2. using namespace std;    
  3. void foo2(int a,int b)    
  4. {    
  5.     cout<<a<<" "<<b<<endl;    
  6. }   
  7. //编译C++,一定要加extern "C",注意C为大写,小写会无法识别  
  8. extern "C"  
  9. {    
  10.    void cfoo2(int a,int b)    
  11.  {    
  12.         foo2(a,b);    
  13.  }    
  14. }    

在cmd窗口中cd到该文件所在目录,输入:g++ -o test1.so -shared -fPIC test1.cpp

-shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件;
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

会生产一个test1.so 动态链接库文件。

3、python调用

写python文件,如test1.py

[html]  view plain  copy
  1. import ctypes    
  2. ll = ctypes.cdll.LoadLibrary   
  3. lib = ll("./test1.so")    
  4. lib.cfoo2(3, 4)  

运行python文件 python test1.py

运行成功显示:1 3

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值