当前位置: 首页 > 图灵资讯 > 行业资讯> python怎么封装dll

python怎么封装dll

发布时间:2025-05-09 10:53:35

Cython是一种结合Python和C语法的语言,可以简单地认为是在Python中添加静态语法。

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

安装Cython

如果已经安装了Cython,可以跳过这一步。安装Cython需要easy_install,Python 2.7.9 上述版本已自带easy_install。Visual Studio的命令提示符下完成(注意用32或64Visual与Python版本合作) Studio的命令提示符可能需要由管理员操作):

easy_install-Ucython

Cython用Cython编译

在PyCharm中新建项目,然后新建Py文件:great_module.py,将以下内容输入本文件:

defstr_add(str1,str2):
returnint(str1)+int(str2)

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

cdefpublicintstr_add(constchar*str1,constchar*str2):
returnint(str1)+int(str2)

相关推荐:Python入门教程

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

cythonrun.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(constchar*a,constchar*b)
{
returnstr_add(a,b);
}
}
BOOLWINAPIDllMain(HINSTANCEhinstDLL,DWORDfdwReason,LPVOIDlpReserved)
{
switch(fdwReason)
{
caseDLL_PROCESS_ATTACH:
Py_Initialize();
///dll初始化时调用,这是python3的写法,python2改为,initrun()。参见生成的run.h
PyInit_run();
break;
caseDLL_PROCESS_DETACH:
Py_Finalize();
break;
}
returnTRUE;
}

右键项目,属性,进入VC++目录标签页。在包含路径的include路径中添加Python,例如“C:\ProgramFilesPython36include"。将Pythonlib添加到库目录中,如“C:\Program FilesPython36libs".注意Release的编译版本,X64平台或X32平台根据Python版本选择。 dll文件可以在编译后获得。

相关文章

python3兼容python2吗

python3兼容python2吗

2025-05-09
python3 whl怎么安装

python3 whl怎么安装

2025-05-09
python 字典怎么提取value

python 字典怎么提取value

2025-05-09
python 怎样计算字符串的长度

python 怎样计算字符串的长度

2025-05-09
python 怎么样反向输出字符串

python 怎么样反向输出字符串

2025-05-09
python 怎么判断字符串开头

python 怎么判断字符串开头

2025-05-09