CopyMemory在IDE环境不会出错,编译成exe程序后运行后出错?
这是我使用到的代码:
CopyMemory ByVal lAddrImage, m_scanInfo.Buffer, m_scanInfo.Width * m_scanInfo.Height + 514
'将CopyMemory ByVal lAddrImage, m_scanInfo.Buffer, m_scanInfo.Width * m_scanInfo.Height + 514'改为CopyMemory ByVal VarPtr (lAddrImage), VarPtr (m_scanInfo.Buffer), m_scanInfo.Width * m_scanInfo.Height + 514'或者CopyMemory ByVal VarPtr (lAddrImage), ByVal VarPtr (m_scanInfo.Buffer), m_scanInfo.Width * m_scanInfo.Height + 514
[解决办法]
Dim lAddrImage As Long
CopyMemory ByVal lAddrImage, m_scanInfo.Buffer......
如果copymemory第二个参数是声明为byref的,那就凭这个参数的传递方式,多半就死定了.
m_scanInfo.Buffer里面的值是一个指针,但在BYREF声明的情况下,你这种语法传入的是这个变量的地址,那最多只能复制4字节(假如Buffer是LONG的话).
再多复制,后面的内存天知道是否可读......
IDE里没挂,是你运气好,或IDE作了处理,不能把偶然当必然.