我有一个用于从 Ruby 调用的旧 C DLL,但现在我需要从 VB6 调用它,但我不知道这样做的正确方法。
这是我需要的函数的标题:
int Decrunch(const BYTE *src, BYTE *dest, DWORD src_length)
*src 是将被函数解密的字节序列
*dest 是一个缓冲区,它将接收解密后的数据。我可以使用 dest=NULL 调用该函数,它将返回解密数据的大小,因此我可以使用它来创建具有正确大小的缓冲区。
我尝试将 src 和 dest 都声明为字符串(就像我在 Ruby 中所做的那样),但它不起作用。我也尝试过将它们声明为 Byte 并传递字节数组的第一个元素,正如我在一些教程中所指出的那样,但我认为我没有正确地做到这一点。
有人可以帮我解决这个问题吗?
谢谢!
最佳答案
航空代码
Private Declare DecrunchGetLength Alias "Decrunch" Lib "somedll.DLL" (ByRef src As Byte, ByVal nullptr As Long, ByVal SrcLength As Long) As Long
Private Declare Decrunch Alias "Decrunch" Lib "somedll.DLL" (ByRef src As Byte, ByRef dest As Byte, ByVal SrcLength As Long) As Long
Dim destLen As Long
Dim src(0 To 9) As Byte
Dim dest() As Byte
' get bytes into src somehow
' get dest length
destLen = DecrunchGetLen( src(0), 0, 10)
ReDim dest(0 To destLen - 1)
destLen = Decrunch( src(0), dest(0), 10)
有用的链接
关于c - VB6 - 使用指针声明和调用 C DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13106234/