在Python中调用C程序可以通过多种方法实现,以下是几种常见的方法:
方法1:使用`subprocess`模块
这是最简单的方法,通过Python的`subprocess`模块调用外部C++可执行文件。
1. 编写C++代码并编译为共享库:
```cpp
// example.cpp
include void hello() { std::cout << "Hello from C++!" << std::endl; } ``` 编译命令: ```sh g++ -shared -o example.so -fPIC example.cpp ``` 2. 在Python中调用共享库: ```python import subprocess subprocess.call(['./example.so', 'hello']) ``` 方法2:使用`ctypes`库 `ctypes`库是Python中用于调用C共享库的常用模块。 1. 编写C程序并编译为动态库: ```c // example.c include void hello() { printf("Hello from C!\n"); } int add(int a, int b) { return a + b; } ``` 编译命令: ```sh gcc -shared -o example.so -fPIC example.c ``` 2. 在Python中加载并调用共享库中的函数: ```python from ctypes import CDLL 加载共享库 example = CDLL('./example.so') 调用C函数 example.hello() result = example.add(3, 4) print("3 + 4 =", result) ``` 方法3:使用C扩展 CPython还提供了使用C扩展来调用C代码的方法,这通常涉及使用Cython等工具将C代码包装成Python模块。 1. 编写C代码: ```c // my_c_code.c include void hello() { printf("Hello from C!\n"); } int add(int a, int b) { return a + b; } ``` 2. 使用Cython编译C代码为Python扩展模块: ```sh cythonize -i my_c_code.c ``` 3. 在Python中导入并使用C扩展模块: ```python import my_c_code 调用C函数 my_c_code.hello() result = my_c_code.add(3, 4) print("3 + 4 =", result) ``` 总结 以上方法各有优缺点,选择哪种方法取决于具体需求和场景: `subprocess`模块:适用于调用外部可执行文件,简单直接。 `ctypes`库:适用于调用动态库中的函数,无需编译成可执行文件,使用方便。 C扩展:适用于需要更高性能和紧密集成的场景,但开发过程相对复杂。 根据你的具体需求选择合适的方法,可以有效地在Python中调用C程序。