关于vb调用vc动态库:参数指针的传递错误。十万火急!!!up有5分,解决给100分
关于vb调用动态库:参数指针的传递
现有用VC生成的win32动态库,原码如下
/////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
void changeText(PVOID dest, PVOID source)
{
unsigned char s[12];
memset(s, 0, 12);
memset(s, 'D', 10);
memcpy(dest, source, 8);
}
该动态库用VC 是可以调用的。
在VB中声明该动态库如下:
Private Declare Sub Copy Lib "chang.dll" Alias "changeText" ( _
lpDest As Any, _
lpSource As Any)
在CommandButton :do中做如下操作
———————————————————————————
Private Sub do_Click()
Dim c1 As String
Dim b1 As String
b1 = "bbbbbbbbbbbbbb"
Copy c1, b1
Text1.Text = c1
End Sub
———————————————————————————
当我点击按扭do时,提示我
Run-time error'49'
Bad DLL calling convention
我查阅了MSDN,说是我传递的参数错误,可是我做了如下操作
声明windows的win32函数:CopyMemory 如下
Private Declare Sub CopyMemory Lib "C:\WINNT\system32\KERNEL32.DLL" Alias "RtlMoveMemory" ( _
lpDest As Any, _
lpSource As Any, _
ByVal cbCopy As Long)
同时作了一个CommandButton :Ptrchange
————————————————————————
Private Sub Ptrchange_Click()
Dim i As Integer
Dim f As Long
Dim ch As String
Dim bArray(1 To 4) As Byte
s1 = "aaaaaaaa"
f = &H4030201
CopyMemry ch, s1, 6
Text1.Text = ch
End Sub
——————————————————————————
在点击Ptrchange后,成功的在Text1里面显示了"aaaaaaaa"
这就是问题的中心了,为什么我的动态库不能被调用呢?是不是我创建的动态库有问题,或者说为VB 创建的
动态库与为VC创建动态库有区别,需要特殊的操作么?我现在在外地做工程,情况紧急,请各位高手多多帮忙!