国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > python怎么封装dll

python怎么封装dll

Python 封装 dll

头像

爱喝马黛茶的安东尼

2019-12-20 17:17:116142浏览 · 0收藏 · 0评论

Cython是结合了Python和C的语法的一种语言,可以简单的认为就是给Python加上了静态类型后的语法。

python学习网,大量的免费python视频教程,欢迎在线学习!

安装Cython

如果已经安装过Cython可以跳过此步。安装Cython需要使用easy_install,Python 2.7.9 以上的版本已经自带easy_install。在Visual Studio的命令提示符下完成(注意配合Python版本使用32位还是64位的Visual Studio的命令提示符,有可能需要以管理员权限运行):

easy_install -U cython

使用Cython编译

在PyCharm中新建工程,然后新建一个py文件:great_module.py,在该文件中输入如下内容:

def str_add(str1, str2):
  return int(str1) + int(str2)

这是一个简单的将字符串转换为int求和的函数。为了使该函数能够被Cython编译,需要新建一个run.pyx文件,并加入如下内容:

cdef public int str_add(const char* str1,const char* str2):
  return int(str1) + int(str2)

相关推荐:《Python入门教程

这其中的cdef和public等都是cython关键字,这些关键字可以帮助函数可以被外部调用。然后在PyCharm中使用下面的命令编译,生成run.h和run.c两个文件。

cython run.pxy

Cython是支持Python的动态类型特性的,如果后续步骤使用VS的命令行编译也可以生成DLL,但是我在实验时不知为何无法提取到DLL中的函数地址,所以这里统一使用静态类型,所有参数和返回值都使用Cython的静态类型关键字规定好数据类型。

通过VS编译得到动态链接库

在得到了.c和.h文件后,我们需要为其创建一个VS DLL工程。打开VS软件,新建win32项目,其中应用程序类型选择DLL,附加选项选择空项目。 将刚刚的.c和.h文件复制到项目存放代码的文件夹并添加到项目中。在项目中添加一个空的dllmain.cpp,并添加如下代码:

#include <Python.h>
#include <Windows.h>
#include "run.h"
extern "C"
{
  __declspec(dllexport) int __stdcall _str_add(const char * a, const char * b)
  {
    return str_add(a, b);
  }
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) 
{
  switch (fdwReason) 
  {
    case DLL_PROCESS_ATTACH:
      Py_Initialize();
      //dll初始化的时候调用,这是python3的写法,python2改成,initrun()。参见生成的run.h
      PyInit_run();
      break;
    case DLL_PROCESS_DETACH:
      Py_Finalize();
      break;
  }
  return TRUE;
}

右键项目,属性,进入VC++目录标签页。在包含路径中添加Python的include路径,如“C:\ProgramFiles\Python36\include”。在库目录中添加Python的lib,如“C:\Program Files\Python36\libs”。注意编译的版本选择Release,根据Python版本选择x64平台或x32平台。 编译后即可得到dll文件。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

妈妈你真棒插曲视频快来救救我| 一枪战三母2雪姨是哪个角| 泡妞网站| 40岁女人如饥似渴最佳解决方法| 一边做饭一边狂躁的原因分析| EXO妈妈MV高清在线观看| 少妇大屁股白浆流出白浆| 《喂奶人妻厨房HD》| 女性变态蕾丝连体开档内衣| 亚洲精品国产拍在线观看| BOBO| 《医务室上垒》动漫全集在线观看 | 挪威的森林截了一段3分钟| 快拨出我是你母亲的歌曲播放| 臣卜扌暴扌 圭辶鬲猛| 下面也要好好疼爱第八集剧情梗概 | 美女被咬小头头视频大全图片| 老公说我的B夹得他很爽| 求片| 《酒店激战》动漫1-5集免费观..| 黄金网站9.1免费入口| 妈妈がだけの心に漂う| 白雪公主被树干哭的故事简介| 没带置子让他C一节课| 国产一区二区三区| 《不戴套瑜伽教练3》| 坤坤寒入桃子里电视剧免费看| 一枪战三母免费观看完整版 | 国产X9X9X9X9X9X任意...| 《老板娘2》完整版| 公翁晚上吃我奶头子| 白丝| 找寂寞妇女| 芬太尼在美国是怎么样的存在| 老师我好爽再深一点老师好涨| 你睡我老婆我也睡你老婆台词| 姐姐片多多免费高清电视剧| 《人妻被下春药在线》| 啊灬啊灬啊…快…深的含义| 日亚M码是日本的还是中国的| 真人做运动视频素材