// pyUtil.cpp : 定义 DLL 应用程序的入口点。
//
#ifdef PYUTIL_EXPORTS
#define PYUTIL_API __declspec(dllexport)
#else
#define PYUTIL_API __declspec(dllimport)
#endif
#include<windows.h>
#include<string>
#include<Python.h>
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
...{
switch (ul_reason_for_call)
...{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

std::string Recognise_Img(const std::string url)
...{
// 返回结果
return "从dll中返回的数据... : " +url;
}
static PyObject* Recognise(PyObject *self, PyObject *args)
...{
const char *url;
std::string sts;
if (!PyArg_ParseTuple(args, "s", &url))
return NULL;
sts = Recognise_Img(url);
return Py_BuildValue("s", sts.c_str() );
}


static PyMethodDef AllMyMethods[] = ...{
...{"Recognise", Recognise, METH_VARARGS},
...{NULL, NULL} /**//* Sentinel */
};
extern "C" PYUTIL_API void initpyUtil() //每个模块必须有的函数,名称格式为"init"+“模块名”
...{
PyObject *m, *d;
m = Py_InitModule("pyUtil", AllMyMethods); //这两步必须照写,保证有变量赋值
d = PyModule_GetDict(m); //
}
编译完成后将DLL文件改名为pyd文件,并放在PYTHON可以搜到的目录下就可以import了
本文介绍如何将一个DLL文件转换成Python模块并实现调用的过程。通过定义DLL的入口点,利用Python.h头文件,创建识别图片URL的功能,并将其封装为Python可调用的方法。
230

被折叠的 条评论
为什么被折叠?



