0%

Python 调用 C++ 函数

  1. “.cpp” 文件是”C++”语言的文件,国际一般读作”C Plus Plus”,因此后缀为”.cpp”.

  2. python 调用C/C++的方法有: boost.python, swig, ctypes, pybind11 等方法。

  3. pybind11 是一个只包含头文件的库,语法与目标非常像Boost.Python; Boost.Python 兼容所有的C++编译器,Pybind11 只支持Python2.7以上和C++ 11以上的编译器。

  4. 使用Pybind11, 需要支持C++11标准的编译器(VS2015以上),还需要下载CMake.

  5. CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装;可以输出各种各样的makefile或者project文件,只是它的组态档取名为 CMakeLists.txt。

  6. CMake 在windows 上编译C++的简单使用
    1)CMake安装好以后,编写一个简单.cpp程序;
    2)在cpp文件相同目录下建立一个CMakeLists.txt文件,例如:

    1
    2
    3
    cmake_minimum_required (VERSION 2.6)
    project (HelloWorld)
    add_executable (HelloWorld HelloWorld.cpp)

    3)到CMakeLists.txt文件的目录,运行CMake:

    1
    cmake .

    4) 生成.sln, .vcxproj文件,可以使用VS打开.sln文件来编译,运行,调试程序。
    5)构建程序

    1
    msbuild Helloworld.sln

    就可以在Debug目录下找到HelloWorld.exe 程序。

  7. Pybind11 是header-only,因此不需要编译动态链接库,直接使用include 就可以。
    1) VS2017新建 C++ 空白工程

    项目属性页->常规->调整输出类型为dll, 调整输出文件名为pyd;
    
    项目属性页->VC++目录->包含目录->(Anaconda3\include,Pybind11\include),库目录(Anaconda3\libs);
    
    项目属性页->链接器->输入->附加依赖项->手动输入(python36.lib,python3.lib)

    2)添加源文件,添加头文件,编译,运行,生成.pyd文件

    3)复制.pyd文件到要引用相同目录下,直接import就可以使用

说明: 以上内容整理自以下链接,侵权无意,告知立删。

fitzzhang:python调用C++之pybind11入门

boonya:使用cmake在Windows上编译c++

kupe87826:Pybind11实现python调用c++