System.AccessViolationException

时间:2009-10-08 11:24:20

标签: vb.net marshalling

我正在以下列方式使用com DLL:

#Region "API Function"
    <DllImportAttribute("abc.dll", EntryPoint:="optcntl")> _
    Public Shared Function optcntl(ByRef pBlocks As blocks) As Integer
    End Function
#End Region

此DLL使用其他四个dll来完成其处理。如果我将当前目录路径从/ bin /文件夹更改为包含所有DLL的C或D驱动器中的其他文件夹。我收到以下错误消息: System.AccessViolationException:尝试读取或写入受保护的内存。 这通常表明其他内存已损坏

任何帮助都会得到适用..

1 个答案:

答案 0 :(得分:1)

如果我理解正确,只要将当前目录路径更改为不包含abc.dll调用的四个dll的路径,就会出错。如果是这样,可能是abc.dll总是在当前目录路径中查找其他四个dll而不是应用程序目录或某个特定位置。但是,这通常会给您一个不同的错误消息,因此请确保在更改currendt目录时,无意中拾取了硬盘驱动器上四个dll的旧错误副本。