python调用动态库最近学习python调用c#与c++的dll。在python中使用import来调用dll。但是我现在想实现根据自
python调用动态库
最近学习python调用c#与c++的dll。
在python中使用import来调用dll。
但是我现在想实现根据自己的输入来调用dll及dll中的函数,该怎么实现呢?
各位大侠帮帮忙,有Demo更好。十分感谢。!
[解决办法]
在python26下调用C封装的动态库。下面的例子很简单:
- C/C++ code
//下面是一个用C封装的动态库:#include "stdio.h"#include "Python.h"int add(int x, int y){ return x + y; }PyObject* wrap_add(PyObject* self, PyObject* args){ int x, y, result; if (!PyArg_ParseTuple(args, "ii", &x, &y)) { return NULL; } result = add(x, y); return Py_BuildValue("i", result);}static PyMethodDef addMethods[] ={ {"add", wrap_add, METH_VARARGS, "Add function"}, {NULL, NULL, 0, NULL}};PyMODINIT_FUNC initCModule(void){ PyObject* m; m = Py_InitModule("CModule", addMethods); }
[解决办法]
C#的dll与C++的dll存在本质上的不同,要调用C#的dll,得先把它注册为com,然后通过python来调用。
[解决办法]
from ctypes import *
libxx = CDLL('e:\oo.dll')
f_nn = libxx.nn
f_nn()
如果根据输入动态变换nn,那可以写一个a.py b.py
a.py的作用区根据输入动态修改b.py,修改完以后a.py的后面再去调b.py
不知道除了这个笨办法还有其他比较优雅的实现方式吗?
[解决办法]
想被其他语言调用的DLL还是使用C接口吧。
[解决办法]
使用PyWin32来调用 