题
我想为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中建议与此签名匹配的功能?
解决方案
#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)
您需要类型。H包含以获取指定完全2字节(签名)整数的INT16_T类型。
请注意,这些数组如何没有指定大小的大小,这就是为什么必须在单独的参数中或已知的先验参数(如pos_block)。
不隶属于 StackOverflow