如何实现 CC++ 与 Python 的通信

Python011

如何实现 CC++ 与 Python 的通信,第1张

如果是C++和python混编。

python有提供一组C api可以自己封装也可以直接用boost库里的python库,

用法可以参考boost程序库完全开发指南

python调c,把c编译成lib文件,即可调用

import ctypes

lib =ctypes.cdll.LoadLibrary(r'abc.dll')

lib.f()

进程间通信 那就不区分语言了,有许多方法

下面是一个在互联网上非常有名的例子.

is 和 == 的区别

256 是一个已经存在的对象, 而 257 不是

当你启动Python 的时候, 数值为 -5 到 256 的对象就已经被分配好了. 这些数字因为经常被使用, 所以会被提前准备好.

Python 通过这种创建小整数池的方式来避免小整数频繁的申请和销毁内存空间.

引用自 https://docs.python.org/3/c-api/long.html

这里解释器并没有智能到能在执行 y = 257 时意识到我们已经创建了一个整数 257 , 所以它在内存中又新建了另一个对象.

当 a 和 b 在同一行中使用相同的值初始化时,会指向同一个对象.

1. 手动制作python的exe可执行程序Python没有内建一个编译为exe的功能。给python程序的部署带来不少的麻烦。所以就会出现一些py2exe之类的很不错的工具,用于自动把.py文件编译为.exe文件。

最近抽空研究了一下手动实现类似py2exe的功能,希望加强对python的了解。结果还相当不错。把结果记录下来,与大家共享。

1.1. 原理文中所描述的方法,基于python的以下几个功能

1) python程序运行时,会在sys.path指定的路径中查找库文件。

2) python从2.3开始,支持从zip文件中import库(支持.py,.pyc和.pyo,但不支持.pyd)

3) python提供C API,让c语言的程序,可以很方便的调用python的程序

1.2. 实际步骤注:假设python安装在c:\python25目录中,最后的可执行文件放到d:\dist目录中

1) 先去c:\python25\Lib目录,把所有文件都复制出来,比如复制到d:\pythonlib目录中