自己用c写的一个md5的 md5dll.dll,其中有一个函数:
extern "C" __declspec(dllexport) unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md);
然后我在VB中引用他,然后调用
首先我在module1中声明
public declare function md5 lib"md5dll.dll"(oridata as any,byval odatalength as long,mac as any)
然后我在程序中调用
dim a(7) as byte
并把数组a 赋值
然后定义了一个数组
dim mac(15) as byte
然后我调用函数md5
md5 a(0),8,mac(0)
但程序报错!内容如下
“ox0a971c73"指令引用的"ox000000002"内存,该内存不能为”written"
如何解决呢,急,急急,谢谢各位大侠帮忙

解决方案 »

  1.   

    public declare function md5 lib"md5dll.dll"(oridata as any,byval odatalength as long,mac as any) as long
      

  2.   

    有关系吗
    我是这样声明的
    public declare function md5 lib"md5dll.dll"(oridata as any,byval odatalength as long,mac as any) as variant,还是没用哦
      

  3.   

    不能用variant,也不能用string
    因为你c里面返回的是字符指针
      

  4.   

    阿,不行,我试过了把他声明成long 也不行!
      

  5.   

    public declare function md5 lib"md5dll.dll"(byval oridata as string,byval odatalength as long,byval mac as String) as long
      

  6.   

    public declare function md5 lib"md5dll.dll"(byval oridata as string,byval odatalength as long,byval mac as String) as long
    这么写肯定对的,但记住mac这个值先分配空间
    比如
    Dim sMac As String * 64

    Dim sMac As String
    sMac = String(64, vbNullChar)
    然后再传递给API 函数