当前位置: 首页 > news >正文

商业网站建设案例课程网络营销课程速成班

商业网站建设案例课程,网络营销课程速成班,河北最近发生的重大新闻,网站做不做备案有什么区别个人测试下来Debug生成的dll改pyd,py中import会报错gilstate->autoInterpreterState 如果遇到同样问题使用Release吧 目录 1.安装pybind11 1.pip: 2.github: 2.配置VS工程 2.在VC目录中的包含目录添加: 3.在VC目录中的库目录…

        个人测试下来Debug生成的dll改pyd,py中import会报错gilstate->autoInterpreterState

        如果遇到同样问题使用Release吧


目录

1.安装pybind11

        1.pip:

        2.github:

2.配置VS工程

        2.在VC目录中的包含目录添加:

        3.在VC目录中的库目录添加:

        4.在链接器-输入-添加依赖项中添加:

3.生成dll

4.快捷更新

        1.创建新的启动项目

        2.添加引用

        3.编写dll2pyd


1.安装pybind11

        pybind11是一个简化python调用c++的库,其使用了许多c++11特性来简化流程

        安装pybind有许多方式,以下列举两种:

        1.pip:

                使用pip install pybind11,便可以直接安装pybind11。

                对应安装目录在Python目录的Lib文件夹下的site-packages文件夹下的pybind11文件夹。

        2.github:

                直接去github官方页面下载,解压到你想安装的位置

                官方链接:https://github.com/pybind/pybind11

2.配置VS工程

        vs版本需要在2017及以上

        1.将配置类型(输出)改成dll

        2.在VC目录中的包含目录添加:

                1.pybind安装目录下的include文件夹

                2.Python文件夹中的include文件夹

        3.在VC目录中的库目录添加:

                Python文件夹中的libs文件夹

        4.在链接器-输入-添加依赖项中添加:

                对应的lib文件

                比如我是Python39,在Python文件夹的libs文件夹中有:

                        1.python3.lib

                        2.python3_d.lib

                        3.python39.lib

                        4.python39_d.lib

                所以在配置为Debug时添加带有后缀_d的lib(上面的2与4)

                Release中添加不带_d的(1与3)

                但其中python3与python3_d.lib好像也可以不用添加

3.生成dll

        可以使用官方的代码先做个测试

        想学更多的可以看官方文档(英文):First steps - pybind11 documentation

#include <pybind11/pybind11.h>int add(int i, int j) {return i + j;
}PYBIND11_MODULE(example, m) {m.doc() = "pybind11 example plugin"; // optional module docstringm.def("add", &add, "A function that adds two numbers");
}

        注意其中PYBIND11_MODULE中第一个参数为你取module的名字

        需要与最终生成的dll文件名字(vs默认是工程名字)(你也可以生成了文件,后改文件名)

        py中import的名字一致

        最终将你生成的dll后缀名改为.pyd放入你python工程中或者和你运行py的文件目录同级,然后import进行使用

$ python
Python 3.9.10 (main, Jan 15 2022, 11:48:04)
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import example
>>> example.add(1, 2)
3
>>>

4.快捷更新

        如果每次生成dll,我们都要到对应的目录找到dll后改名再放入py目录中就太麻烦了

        这时我们可以使用vs多项目间的引用功能

        1.创建新的启动项目

        在同解决方案内创建一个新的控制台项目

        红框内是上述配置好用于生成dll的项目(MyCPPLib)

        而dll2pyd这个项目是用于新创建的自动更新的控制台项目

        

        创建好后,将项目的启动项目设置为dll2pyd

        2.添加引用

        在dll2pyd中的引用里添加MyCPPLib

        

        那么添加后,只要点击调试,vs就会运行我们dll2pyd的代码

        而dll2pyd引用了MyCPPLib,故如MyCPPLib需要更新,则会在运行dll2pyd前自动更新

     

        3.编写dll2pyd

        那么显然此时我们只需要在dll2pyd的main函数实现

        能够让生成dll自动覆盖目标位置pyd的代码即可

        此时我们便可以更改MyCPPLib文件的源码

        然后直接点击调试运行便可以直接在Pycharm(或者其他py)中看到效果

        以下是我的一个简单实现:

        读取MyCPPLib(解决方案名字)/dll2pyd(项目名字)/config.ini配置文件

#include <fstream>
#include <iostream>
using namespace std;
string source;
string target;void read_ini()
{ifstream fs("config.ini", ios_base::in);string temp;fs >> temp;fs >> source;fs >> temp;fs >> target;fs.close();
}int main()
{read_ini();ifstream ifs(source, ios_base::in  | ios_base::binary);ofstream ofs(target, ios_base::out | ios_base::binary);bool flag = true;if (!ifs.is_open())cout << "open source[" << source << "] failed" << endl, flag = false;if (!ofs.is_open())cout << "open target[" << target << "] failed" << endl, flag = false;if (flag)ofs << ifs.rdbuf();ifs.close();ofs.close();return 0;
}

http://www.hkea.cn/news/780728/

相关文章:

  • 网站开发专业就业指导企业网站设计与实现论文
  • 网络营销方式的思维导图seo关键词优化系统
  • wordpress访客ip记录福清市百度seo
  • 网站下载速度慢互联网广告推广公司
  • 电影网站空间配置网络营销的工具和方法有哪些
  • 包装设计网站免费百度seo搜索引擎优化厂家
  • 免费做公司网站sem对seo的影响有哪些
  • 网站空间购买费用关键词优化计划
  • 网站制作可以卖多少钱陕西网站建设制作
  • 深圳中小企业网站制作谷歌海外广告投放
  • 做游戏网站的需求分析创建app平台
  • 青岛胶南做网站的有多少seo商学院
  • 二月网站建设南宁百度个人中心登录
  • 如何在相关网站免费做宣传广告免费建立个人网站官网
  • 做搜狗网站优化首自己建立网站步骤
  • 企业资质查询官方网站最好的小说网站排名
  • 乐平网站设计北京互联网公司
  • 朝阳企业网站建设方案费用郑州网络营销学校
  • 建站行业发展百度广告代运营
  • 如何做积分商城网站鸡西seo顾问
  • p2p网站开发文档免费b站软件下载
  • 有没有做q版头像的网站今天百度数据
  • wordpress页面修改插件seo顾问阿亮
  • 政府门户网站建设标准国际婚恋网站排名
  • 上海青浦网站建设郑州靠谱seo电话
  • 网站建设怎么样seo专家招聘
  • 在网盘上怎么做自己的网站整站优化推广
  • php建设网站实训百度搜索引擎的总结
  • 怎么在360自己做网站重庆seo排名收费
  • 外贸网站建设浩森宇特教育培训报名