Ubuntu中C++與Python的混合編程

c++
小樊
102
2024-09-04 10:40:25

在Ubuntu中,你可以使用C++和Python進(jìn)行混合編程

  1. 使用Cython:

Cython是一個(gè)Python編程語(yǔ)言的擴(kuò)展,它增加了對(duì)C和C++語(yǔ)言特性的支持。你可以使用Cython將C++代碼編譯成Python模塊,然后在Python代碼中調(diào)用這些模塊。

首先,安裝Cython:

pip install cython

接下來(lái),創(chuàng)建一個(gè)名為hello.cpp的C++文件:

#include<iostream>

void hello() {
    std::cout << "Hello from C++!"<< std::endl;
}

然后,創(chuàng)建一個(gè)名為hello.pyx的Cython文件:

cdef extern from "hello.cpp":
    void hello()

def say_hello():
    hello()

現(xiàn)在,創(chuàng)建一個(gè)名為setup.py的Python設(shè)置文件:

from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("hello.pyx")
)

最后,運(yùn)行以下命令以構(gòu)建和安裝Cython模塊:

python setup.py build_ext --inplace

現(xiàn)在,你可以在Python代碼中導(dǎo)入并使用這個(gè)模塊:

import hello

hello.say_hello()
  1. 使用ctypes:

ctypes是Python的一個(gè)標(biāo)準(zhǔn)庫(kù),允許你在Python中調(diào)用C/C++共享庫(kù)(例如.so文件)。首先,創(chuàng)建一個(gè)名為hello.cpp的C++文件:

#include<iostream>

extern "C" void hello() {
    std::cout << "Hello from C++!"<< std::endl;
}

然后,使用g++編譯器將其編譯為共享庫(kù):

g++ -shared -o libhello.so hello.cpp

現(xiàn)在,你可以在Python代碼中使用ctypes調(diào)用這個(gè)共享庫(kù):

import ctypes

lib = ctypes.CDLL('./libhello.so')
lib.hello()

這兩種方法都可以實(shí)現(xiàn)在Ubuntu中使用C++和Python進(jìn)行混合編程。選擇哪種方法取決于你的需求和項(xiàng)目的復(fù)雜性。

0