编写C DLL的替代品?

时间:2009-08-16 18:14:03

标签: c dll btrieve

我想为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中建议一个与此签名匹配的函数吗?

1 个答案:

答案 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)。