python调用动态库

dwwwwing 2009-06-18 07:33:19
最近学习python调用c#与c++的dll。
在python中使用import来调用dll。
但是我现在想实现根据自己的输入来调用dll及dll中的函数,该怎么实现呢?
各位大侠帮帮忙,有Demo更好。十分感谢。!
...全文
477 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
请叫我魔先生 2011-11-08
  • 打赏
  • 举报
回复
顶贴~~求解~~
小弟也遇见了这样的一个问题,用C#写成DLL,如何用python去调用该DLL中的方法,并且该DLL存在命名空间.....
不得闲 2009-07-04
  • 打赏
  • 举报
回复
使用PyWin32来调用
wangyaosuper 2009-07-03
  • 打赏
  • 举报
回复
iambic 2009-07-03
  • 打赏
  • 举报
回复
想被其他语言调用的DLL还是使用C接口吧。
JGood 2009-06-19
  • 打赏
  • 举报
回复
C#的dll与C++的dll存在本质上的不同,要调用C#的dll,得先把它注册为com,然后通过python来调用。
playmud 2009-06-19
  • 打赏
  • 举报
回复
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
不知道除了这个笨办法还有其他比较优雅的实现方式吗?
JGood 2009-06-18
  • 打赏
  • 举报
回复
在python26下调用C封装的动态库。下面的例子很简单:


//下面是一个用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);
}


vs2003 al.exe编译命令行:al.exe /I "C:\Python26\include" CModule.c /link /dll /libpath "C:\python26\libs\python26.lib" /out:CModule.pyd

把CModule.pyd放到.py文件的同一目录下或c:\python26\lib,然后在代码中
import CModule
print CModule.add(1, 2) #结果:3
dwwwwing 2009-06-18
  • 打赏
  • 举报
回复
对python精通的高手都去哪里了啊?
king_2007 2009-06-18
  • 打赏
  • 举报
回复
好像要下载个ctypes模块,然后调用dll,可是具体怎么样调用,你看看具体的帮助吧。如果给了一个.dll文件,但不知道里面具体的参数,该怎么办??
梦无痕123 2009-06-18
  • 打赏
  • 举报
回复
帮顶,同时gz

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧