python调用c++

一:python3, c++11

二:代码

cpp

#include <iostream>
using namespace std;

class TestObj
{
public:
	void display()
	{
		std::cout << "Default display\n";
	}
	void display(int val)
	{
		std::cout << "display value: " << val << std::endl;
	}
	int add_int(int a, int b)
	{
		return (a + b);
	}
};

extern "C"
{
	TestObj obj;
	void display() {obj.display();}
	void display_int(int val) {obj.display(val);}
	int add_int(int a, int b) { return obj.add_int(a, b); }
}	

python

import ctypes

so = ctypes.cdll.LoadLibrary
lib = so('./libpy.so')
print('--------')
lib.display()
print('--------')
lib.display_int(100)
print('--------')
print(lib.add_int(99, 88))

三:编译cpp生成库文件

    g++ pycall.cpp -shared -fPIC -std=c++11 -o libpy.so

四:运行

    python3 pycall.py 

五:结果

    --------
    Default display
    --------
    display value: 100
    --------
    187



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonC++都是很强大的编程语言,它们都有着自己的优势和特点。在一些情况下,我们可能需要在Python调用C++代码来实现更高效的计算或者更底层的操作。这时候可以使用PythonC++扩展库来实现。 PythonC++扩展库可以让我们将C++代码编译成Python调用的模块,然后在Python环境中使用。常见的PythonC++扩展库有Boost.Python、Cython、SWIG等。这里以Cython为例,介绍如何使用Python调用C++。 1.安装Cython 在使用Cython之前,需要先安装Cython。可以通过pip工具进行安装,命令如下: ``` pip install cython ``` 2.编写C++代码 下面是一个简单的C++代码示例,实现了一个计算两个整数和的函数: ``` // sum.cpp int sum(int a, int b) { return a + b; } ``` 3.编写Cython代码 下面是一个简单的Cython代码示例,调用了上面的sum函数: ``` # sum.pyx cdef extern from "sum.cpp": int sum(int a, int b) def py_sum(int a, int b): return sum(a, b) ``` 4.编写setup.py文件 下面是一个简单的setup.py文件,用于编译Cython代码生成Python模块: ``` # setup.py from distutils.core import setup from Cython.Build import cythonize setup( ext_modules=cythonize("sum.pyx") ) ``` 5.编译生成Python模块 在命令行中执行以下命令,即可编译生成Python模块: ``` python setup.py build_ext --inplace ``` 6.在Python调用C++代码 下面是一个简单的Python示例,调用了上面生成的Python模块: ``` # main.py import sum a = 1 b = 2 c = sum.py_sum(a, b) print(c) # 输出3 ``` 通过上述步骤,就可以在Python调用C++代码了。需要注意的是,在编写Cython代码时,需要使用Cython的语法规则,而不能直接使用Python的语法规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值