C++ Python混合编程

最近接触了混编的项目,项目是02年开发的,当时使用的是VC6.0+TCL脚本,VC负责前台的界面显示,后台全部用TCL实现,由于公司规定不能截图出来,望大家海涵,大概描述一下工具的功能,主要用于检查某种负责通信的服务是否配置、运行等正常。大体功能如下:左边是局点的控制描述,主要记录有局点名称、局点IP、连接方式、用户名密码、是否使用内置FTP等信息,右边是每一个局点要执行的任务配置项,主要分为两个大项:健康检查和信息收集。

  最近有一个新的需求是给现有的工具添加一个导入导出的功能,主要就是左边的这些操作,方便在配置一次后,在不同的PC上运行相同的工具不需要重新再次配置,只需要将要来配置好的执行一次导入导出就可以执行检查操作。由于本人再次之前没有接触过VC的MFC框架,所以想通过其他的方式处理这个新的需求,目前在网上找到一些可以参考的例子:

  C++与python混合编程

  • (http://blog.sina.com.cn/s/blog_6ec980ee0101cgax.html)
  • (http://www.cnblogs.com/lvpengms/archive/2010/02/03/1663071.html)
  • (http://www.cnblogs.com/yincheng01/archive/2010/04/24/2213259.html)

  java和jpython混合编程

  • (http://blog.csdn.net/hong0220/article/details/40831605)

  C#与python混合编程

  • (http://www.cnblogs.com/chaosimple/p/4035693.html)

  但是看起在运行的过程中都离不开python解释器,这让人很头疼也很郁闷呀,因为我不能要求需要使用这个工具的的人都安装python的解释器,而且不同的人安装的解释器版本不同,有可能出现更多的问题,这些都不是我一个小小的开发能控制的。所以我的想法是我能不能把python的运行环境集成起来形成一个封闭的工具系统而不依赖具体的环境,就像是java开发的软件独立的携带自己的jvm独立运行。

  找到一个C++与python混合编程操作的例子:

  一、环境搭建

  1. 安装python2.7(其他版本的python环境不影响下面的操作,只是注意区分不同的设置)。
  2. 配置vs2013项目(python自带的python27.dll为release版本,所以vs2013项目也必须调整为release,如果需要debug版本可以下载python源码自己编译,也可以在网上找找有没有好心人编译好的。)
  3. 使用VS2013创建C++工程,创建完成后设置工程的属性引用头文件和静态库等,具体设置如下图所示:

  ① C/C++  ----> 常规 ---> 附件库包含目录,加入python头文件目录

 

  ② 连接器 ---> 常规 --->附件库目录。加入python库文件目录

 

  ③ 连接器 ---> 输入 ---> 附加依赖项。加入python库文件名

 

  二、代码实现

  1、嵌套调用

 C++代码调用python

 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
 def Hello(s):
     print "Hello, world!"
     print s
 
 def HelloWorld():  
     print "Hello World"  
 def add(a, b):  
     return a+b  
 def TestDict(dict):  
     print dict  
     dict["Age"] = 17  
     return dict  
 class Person:  
     def greet(self, greetStr):  
         print greetStr  
 #print add(5,7)  
 #a = raw_input("Enter To Continue...")  

运行结果:

 

 

 

  2、Python调用C++(使用python中的ctypes模块可以很方便的调用windows的dll(也包括linux下的so等文件))

 from ctypes import *
 dll = CDLL("add.dll")  
 print dll.Add(1, 102)

还有一种方式是利用boost库中的,boost.python方式,这种方式目前没有做过尝试,放在下一篇继续记录我的实践操作吧,感谢大家的支持!

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值