菜鸟笔记
提升您的技术认知

python调用c -ag真人游戏

一、创建c 工程

1、创建工程

打开vs2019-创建新项目-创建空项目-配置新项目

2、创建脚本(创建源文件)

右键“源文件”-添加-新建项

这里.cpp文件的名字最好用英文:

源文件创建好了,就来写段代码吧,这里写个简单的“hello,world”:
注意:脚本中“pybind11_module(hello, m)”里的“hello”将会是最终python用来引用的库包名(import hello)

#include 
namespace py = pybind11;
pybind11_module(hello, m) {
  
    m.doc() = "pybind11 example module";
    // add bindings here
    m.def("prt", []() {
  
        return "hello, world!";
    });
}

写完之后会发现include不对,这里就需要配置一下项目属性了。

3、配置项目属性:

点击界面最上方“项目”-“属性”,进入属性配置页面,配置“release”,平台为“x64”:
!!!重要:如果引用目录配置好了但是还是一直报错,一定要检查这里是不是配置对了,点开“配置管理器”检查。

(1)配置“附加包含目录”:

添加anaconda的include目录(d:\anaconda3\include)、pybind的include目录(d:\anaconda3\lib\site-packages\pybind11\include):
如果安装了pytorch,torch的include目录中含有pybind11,包含此目录即可引入pybind11。

如果包含pybind11.h头文件还是不成功的话,可以改成下载好的pybind11源码的目录:“***pybind11\include”,该地址是从https://github.com/pybind/pybind11下载的pybind11的源码,解压后的文件夹如下图:

如果还是没有成功的话orz,只能采用最直接的手段了——将include文件中的pybind11文件夹复制到当前包含头文件的目录下就可以了。
(2)配置链接器:

这里需要添加“python37.lib”和“python3.lib”

到这里就配置完成了。
如果是用anaconda3自带的python,应该是没有这两个lib文件的,可以下载python安装程序,安装debug版本的python3.7,安装目录选到anaconda3目录下,替换自带python,就会有这两个lib文件了。

1、创建文件

在c 工程-project1的文件夹内:
(1)创建“build”文件夹,此文件夹用于编译;
(2)将从github下载的pybind11的源码压缩包解压,解压后文件夹重命名为“pybind11”,并拷贝到project11文件夹下;(add_subdirectory()需要用到)
(3)创建“cmakelists.txt”,内容如下:

cmake_minimum_required(version 2.8.12)
project(hello)
add_subdirectory(pybind11)
pybind11_add_module(hello hello.cpp)

完成之后的工程目录如下图:

2、使用cmake编译

打开cmake-gui,两种方法打开都行:


打开后选择源码文件夹和build文件夹:

完成后点击“configure”,出现“configuring done”再点击“generate”,出现“generating done”就ok了。

完成之后,在“build”文件夹里面出现了一个新的c 工程,但是没有.cpp文件:

在 vs中打开这个工程,也可以点击cmake-gui界面上的“open project”打开:

点击上方的“生成”-“生成hello”:

生成成功,这个.pyd就是成果了:

生成好的.pyd文件还不能直接被python导入,需要放在python能够找到的路径下,即python库包统一存放的位置“**/lib/site-packages”。
这里用的anaconda自带的python,所以直接拷贝放在d:\anaconda3\lib\site-packages目录里面了。

放好之后就可以打开python放心调用了:

网站地图