문제

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과 같이 우선 순위가 알려져 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top