在基于VB6的DLL上使用Python Ctypes访问违反写入异常

时间:2014-06-19 19:45:26

标签: python exception dll ctypes

这可能看起来多余或非常简单,但我无法弄清楚这个阅读类似的帖子。希望它是一个可以修复的问题。

我有一个基于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

0 个答案:

没有答案