c - VB6 - 使用指针声明和调用 C DLL

标签 c dll vb6

我有一个用于从 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/

相关文章:

C程序逐行读取文本文件时添加空格

c - 如何获取 int 的低 8 位?

delphi - 任何人都可以帮助我解释我在尝试使用 dll 打开端口时遇到的这个错误

c# - 串行端口与 MSComm

C - 在 vector 中输入数字 0 时中断 while 循环

c - 如何读取图像文件?

c - DLL 隐式链接

java - 无法在 Java 中运行 reg Free com Dll(在 VC++ 中创建)

VBA 在运行时添加到数组

multithreading - VB6 Timer 控件是否创建单独的线程?