【发布时间】:2012-07-18 10:18:53
【问题描述】:
我正在尝试使用 Pythons ctypes 模块从 DLL 导入和使用函数,但我不断收到此错误:
Windows Error: exception: access violation writing 0x0000002C
我已经查看了关于此处类似主题的其他问题,但似乎没有一个能够提供有效的答案。 我目前的代码如下:
from ctypes import *
dll = "./WinlicenseSDK/WinlicenseSDK.dll"
mydll = cdll.LoadLibrary(dll)
name = c_char_p("A.N. Body")
org = c_char_p("ACME")
pcID = c_char_p("APC44567")
zero = c_int(0)
licenseKey = create_string_buffer("")
mydll.WLGenLicenseFileKey(HASH, name, org, pcID, zero, zero, zero, zero, zero, licenseKey)
背景:我正在研究一款软件的许可技术。上述函数通过散列参数生成许可证密钥。
WLGenLicenseFileKey 的最后一个参数是生成的密钥写入的字符串缓冲区。
我尝试使用 mydll.WLGenLicenseFileKey.argtypes = ... 设置函数的 argtypes 但这不起作用,因为没有字符串缓冲区 ctypes 原始类型,因为没有字符串、整数、浮点数等。
谁能告诉我哪里出错了?
编辑:
C/C++函数定义:
int WLGenLicenseFileKeyW(
wchar_t* pLicenseHash,
wchar_t* pUserName,
wchar_t* pOrganization,
wchar_t* pCustomData,
wchar_t* pMachineID,
int NumDays,
int NumExec,
SYSTEMTIME* pExpirationDate,
int CountryId,
int Runtime,
int GlobalTime,
char* pBufferOut
);
这就是文档提供的有关函数的所有信息。
【问题讨论】: