Python の 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 の最後のパラメータは、生成されたキーが書き込まれる文字列バッファです。
関数の argtypes を設定しようとしましたmydll.WLGenLicenseFileKey.argtypes = ...
が、文字列、int、float などのように文字列バッファー 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
);
これが、ドキュメントが関数について提供するすべての情報です。