문제
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 유형을 얻으려면 포함됩니다.
배열에 크기가 지정되지 않은 방법에 주목하십시오. 그래서 크기가 별도의 매개 변수에 있거나 POR_BLOCK과 같이 우선 순위가 알려져 있어야합니다.
제휴하지 않습니다 StackOverflow