“.cpp” 文件是”C++”语言的文件,国际一般读作”C Plus Plus”,因此后缀为”.cpp”.
python 调用C/C++的方法有: boost.python, swig, ctypes, pybind11 等方法。
pybind11 是一个只包含头文件的库,语法与目标非常像Boost.Python; Boost.Python 兼容所有的C++编译器,Pybind11 只支持Python2.7以上和C++ 11以上的编译器。
使用Pybind11, 需要支持C++11标准的编译器(VS2015以上),还需要下载CMake.
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装;可以输出各种各样的makefile或者project文件,只是它的组态档取名为 CMakeLists.txt。
CMake 在windows 上编译C++的简单使用
1)CMake安装好以后,编写一个简单.cpp程序;
2)在cpp文件相同目录下建立一个CMakeLists.txt文件,例如:1
2
3cmake_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 程序。
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++