在Ubuntu8.04下用CB的C++调用Python3.0代码

3 篇文章 0 订阅
0 篇文章 0 订阅

        最近比较忙,好久没有在博客上更新自己的技术文章了。这两天研究了一下C++调用Python的实现,也算是跟上时代的潮流吧。毕竟用编译型语言调用解释型语言,能给程序带来极大的扩展性。高通作的生产配置工具(QPST)里面有个很重要的功能,就是支持perl脚本来完成一些生产支持工作。我们的仿照程序则是简单的C++再实现。当出现新需求时,唯一的办法是重新编码,然后编译,测试,发布。当出现软件结构比较大的改动时,这种过程是无法避免,且是必要的。但如果新需求其实只是简单的某一模块的扩展时,则该过程显得繁琐和低效。假如,我们的程序也能实现类似的机制,则能比较灵活的适应某些场合对现有功能扩展的需要。

       为什么考虑C++?很简单,因为我们都是用C++开发。不过,如果我能转入做嵌入端的开发,我也会用C来调用Python的。

       为什么是Python,而不是别的语言?如perl?因为,我所了解到的情况,Python似乎是解释语言中效率最高的——《Think in C++》一书中的评价。既然我皈依C++门下,就应该全力支持。所以遵从了C++大师的指引,选择了Python。

       我分别在Windows XP32 SP2下和Ubuntu8.04下分别实现了C++调用了Python代码。

       Windows XP

       Windows下的调用十分简单,没什么太多说的。我在Windows下的IDE是VS2005,今后我会把在CB下的调用实验一下,然后再补充上来。

        Ubuntu8.04

        Ubuntu8.04里面自带,或是新立德里面的Python是2.5版本的,而最新的Python版本为3.0。3.0和2.5之间在语法上还是有些差异的。况且个人觉得3.0的用户手册比以前好很多,虽然有些地方还是写的比较简单。

        第一步:需要到http://www.python.org/download/去下载3.0.1的源代码。因为我没有找到可以直接在Ubuntu上的安装包。将源代码压缩包下载下来后,解压到某个自己指定的位置。用终端窗口,进入该位置目录。然后使用命令“./configure“配置安装环境。执行结果可能会告诉你还差某些库或头文件。那么,你可以根据提示信息,通过网络搜索或新立德管理器来查找原因和安装这些缺失的库和头文件。当“./configure”执行成功后,可以用键盘敲入:“sudo make”命令。之所以要加上“sudo”是因为我在执行make的时候,有时候会提示没有权限进入某些目录。当你在提示符后输入管理员密码后,这个问题肯定就不会出现了。之后再键入:“sudo make install"命令,安装Python3.0.1。如果你想完全覆盖之前的Python,可以用"sudo make fullinstall"命令。详细信息,可以打开目录中的README文档。前面的命令除了安装Python3.0.1,还会生成一个libPython3.0.a的静态库文件。如果你想要得到一个动态库,则需要使用"./configure --enable-shared"。后面的步骤都是一样。

        第二步:写个简单的python代码,保存为test.py文件。我的内容如下:          第三步:用CB建立一个Console工程。在main.cpp中编写如下代码:        第四步:在CB的Build选项的Search directories的编译器中添加Python3.0安装路径的Include目录路径;在连接器中添加Python3.0安装路径的lib目录路径。然后将前面Python3.0.1解压目录中生成的libPython3.1.a静态库拷贝添加到Build选项的Linker settings的连接库中,同时要点击下面的“Copy to all...”按钮,将静态库拷贝到本地。否则编译时会提示错误。

        最后一步:点击运行。终端窗口会打印如下信息:         如果你看到上面的信息,恭喜你! 证明你的C++程序调用Python的test.py代码已经成功。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值