各位大哥大姐,小弟向你们求救
我把一个协议里的源代码编译成dll,用vba调用
dll里面的函数是这样的 aaa(unsigned char *key,unsigned char *data)
用c写的文件作一个测试 比如 unsigned char a={14,15}
                       unsigned char b={12,13} 
                   调用aaa(a,b) 后得到的加密后的b但是在vba中,我 dim a() as byte
              dim  b() as byte
              a(0) =14 a(1)=15
              b(0)=12 b(1)=13
              aaa(a(0),b(0))
              这样得到的值和上面的期待值不一样
                为什么呢
                但是我在vba中,反加密却没有问题
                就是说比如 我得到b(0) =32 b(1)=64
              然后再call aaa(a(0),b(0)) 
              可以得到 b(0)=12 b(1)=13
              
              实在不知道为什么啊????

解决方案 »

  1.   

    自己顶一下~~~ 我得高级语言实在是不行,我想应该是传递参数的问题,但是我做过传递参数的试验,vba中定义的a(0)=15 传递进dll没有问题,也可以用于计算阿
      

  2.   

    声明写的是lib“XXX” aaa(byref a as byte,byref b as byte)
      

  3.   

    private declare sub aaa lib "xxx" (key as any, data as any)              dim  b() as byte 
                  a(0) =14 a(1)=15 
                  b(0)=12 b(1)=13 
                  aaa(a(0),b(0))