这可能看起来多余或非常简单,但我无法弄清楚这个阅读类似的帖子。希望它是一个可以修复的问题。
我有一个基于vb6代码创建的WINDLL,它包含3个公共函数,如下所示:
PrintTitlesName(MyPath as String)
CreateDllFile(MyPath as String)
这两个功能的描述如下:
PrintTitlesName:打印您需要使用的变量的标题 带有扩展名(.MyTitles)的项目文件夹(MyPath) CreatDllFile:使用扩展名在项目文件夹(MyPath)中创建一个文件 (.DLLFile)。
根据我读到的关于CTypes的内容,我想出了以下代码来使用DLL:
import ctypes
NNDLL = ctypes.WinDLL ("D:/ISI/tmp/NN DLL/NNetApply.dll")
# ------------------------------------------------------
# PrintTitlesName (MyAddress As String)
# ------------------------------------------------------
TitlesApiProto = ctypes.WINFUNCTYPE (ctypes.c_void_p, ctypes.c_char_p)
TitlesApiParams = (1, "p1", 0),
TitlesApi = TitlesApiProto (("PrintTitlesName", NNDLL), TitlesApiParams)
# ------------------------------------------------------
# Call Functions
# ------------------------------------------------------
p1 = ctypes.c_char_p ("D:/ISI/tmp/NN DLL/Demo/")
TitlesApi (p1)
运行上面的代码会导致Windows错误,这似乎是DLL的一些非法操作。但是,我无法理解错误,我将不胜感激。
Traceback (most recent call last):
File "D:\ISI\tmp\NN DLL\Test DLL.py", line 98, in <module>
TitlesApi (p1)
WindowsError: exception: access violation writing 0x00000050