当前位置:编程学习 > VB >>

尝试读取或写入受保护的内存。这通常指示其他内存已损坏

在对电机进行控制中,我在程序中调用的是电机公司提供的动态链接库
在对函数PamcGetResponseA函数调用的时候出现问题,问题提示如下:尝试读取或写入受保护的内存。这通常指示其他内存已损坏 。
公司提供的函数原型为
* long PamcGetResponseA(DWORD dwDevice,PCHAR response,UINT maxchar,PCHAR command);

公司提供的例程中对该函数的声明如下:(平台是VB 6.0)
Declare Function PamcGetResponseA Lib "Pcomm32.dll"(Byval pmac as long,Byval response$,Byval dummy as Integer,Byval com_string$) as long

在VB6.0 下运行了公司编写的程序,运行正常,没有问题。

而我编写的环境是VB 2005
我对该函数的声明如下
Declare Function PamcGetResponseA Lib "Pcomm32.dll"(Byval pmac as integer,Byval response as string,Byval dummy as short ,Byval com_string as string) as integer
我对函数的声明参考的是公司编写的程序6.0 通过自动升级到2005 后的声明方式。
运行的时候出现问题:尝试读取或写入受保护的内存。这通常指示其他内存已损坏 
请问这是什么原因。
我估计是函数传递的问题,我尝试过很多函数类型的变换都不正确。

--------------------编程问答-------------------- 这个是啥问题呢。。 --------------------编程问答-------------------- 将
response

com_string 
声明为定长数组试试。
比如
Dim response As String*10
Dim com_string As String*10
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,