我想为w3btrv7.dll编写一个非常简单的替代品,这样我就可以将Btrieve API调用传递给另一个库(用.NET编写并通过COM调用)。基本上,我需要模仿C中BTRCALL函数的签名。但是,我根本不是C程序员......我想我对如何编写一个导出函数的DLL有一个很好的想法,但除此之外,我迷失了。
基本签名如下所示:
int BTRCALL(Operation Code, Position Block, Data Buffer, Data Buffer Length,
Key Buffer, Key Buffer Length, Key Number)
操作代码 - 整数
位置阻止 - 128字节数组
数据缓冲区 - 我找不到很多关于此的细节,但我认为它是一个字节数组,其长度由数据缓冲区长度参数指定。
数据缓冲区长度 - 同样,信息不多,但我认为这是一个整数,指定前一个字节数组的长度。
密钥缓冲区 - 最大大小为255字节的字节数组
密钥缓冲区长度 - 前一个字节数组的长度
密钥编号 - 2字节整数
有人可以在C中建议一个与此签名匹配的函数吗?
答案 0 :(得分:0)
#include <types.h>
int BTRCALL(int op_code, char pos_block[], char data_buf[], int data_buf_len, char key_buf[], int key_buf_len, int16_t key_num)
您需要types.h include来获取指定正确的2字节(带符号)整数的int16_t类型。
注意数组的大小是如何指定的,这就是为什么大小必须在一个单独的参数中或者已知的先验(如pos_block)。