我有一个DLL,其中的头文件和.c文件如下:
//demo.h
#define vers 0x1
__declspec export void getversion(ulong * version);
//demo.c
#include"demo.h"
void getversion(ulong * version)
{
*version=(ulong)vers;
}
我为使用ctypes调用DLL编写的python脚本如下:
//python script
import ctypes
import sys
from ctypes import *
vers=0x1
def getversion(version):
mydll=cdll.LoadLibrary('demo.dll')
mydll.getversion.argtypes=[POINTER(c_ulong)]
mydll.getversion.restype=None
mydll.getversion(version)
version=c_ulong()
print("Version=",version.value)
但我得到的版本值是0。 输出应该是1。 有人能帮我做以下代码吗?我不知道我哪里出错了?你知道吗
下面是一个完全适用于windows&V的示例,如果您想在linux上试用,只需更改数据类型并删除windows标头:
演示.h
演示.c
演示.py
希望它能帮助你开始。你知道吗
您的代码没有调用
getversion
。您的代码创建一个默认的ulong()
(初始化为零)并打印它。你知道吗以下是工作代码:
这是我测试的DLL(你的原样不会编译…没有
ulong
的定义),是用Microsoft Visual Studio编译的。你知道吗我认为你应该这样做:
相关问题 更多 >
编程相关推荐