애드센스와이드


Binlog.dll import C#



벡터사에서 제공하는 로그 변환 dll인 binlog.dll을 사용할 일이 있어 정리해본다.

C++로 만들어진 예제는 주어지나 나는 C#을 사용해야하므로 import를 해오는 과정에서
struct를 3번 중첩해서 가져오는 부분이 있는데 이 부분을 처리할 때 컴파일 에러는 아닌
실행상 오류가 나서 이를 해결한 과정을 아래와 같이 중요 부분만 정리해둔다.

포인트
1. struct를 가져올 때는 명시적으로 가져오고 offset을 설정하여 그 크기를 고정해두자.
2. dll import 시 struct는 포인터로 선언되어 있으므로 ref를 사용한다.
3. struct를 main함수에서 정의할 때 sizeOf 처리는 아래와 같이 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        /* setup object headers */
        appTrigger.mHeader.mBase.mSignature = BL_OBJ_SIGNATURE;
        appTrigger.mHeader.mBase.mHeaderSize = sizeof( appTrigger.mHeader);
        appTrigger.mHeader.mBase.mHeaderVersion = 1;
        appTrigger.mHeader.mBase.mObjectSize = sizeof( VBLAppTrigger);
        appTrigger.mHeader.mBase.mObjectType = BL_OBJ_TYPE_APP_TRIGGER;
        appTrigger.mHeader.mObjectFlags = BL_OBJ_FLAG_TIME_ONE_NANS;
 
        /* setup object headers */
        appTrigger.mHeader.mBase.mSignature = BL_OBJ_SIGNATURE;
        appTrigger.mHeader.mBase.mHeaderSize = (ushort)Marshal.SizeOf(appTrigger.mHeader);
        appTrigger.mHeader.mBase.mHeaderVersion = 1;
        appTrigger.mHeader.mBase.mObjectSize = (uint)Marshal.SizeOf(typeof(VBLAppTrigger));
        appTrigger.mHeader.mBase.mObjectType = BL_OBJ_TYPE_APP_TRIGGER;
        appTrigger.mHeader.mObjectFlags = BL_OBJ_FLAG_TIME_ONE_NANS;
cs

4. C++ --> C#으로 변환 시 주요 자료형 주의한다.


소스코드는 완성했으나 깃헙에 올리면 잘릴 듯 하네요. (이전에 다른 사람도 잘려서...)

binlog 파일은 첨부 참조: binlog.zip





덧글

  • 2020/10/14 08:32 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 완죤쵸보 2021/01/01 18:24 #

    안녕하세요. 코드는 완성하였으나 벡터사의 저작권 문제로 해당 내용 공유를 드기 어려운 점 양해 부탁드립니다.
    다만 궁금하신 점은 문의 주시면 답변 드릴 수 있어요.
  • 세잎이 2021/01/06 17:51 # 삭제 답글

    안녕하세요. 혹시 binlog.dll 파일과 예제 파일은 벡터 홈페이지에서 다운로드를 받나요?
    그렇다고 한다면 다운로드 링크 좀 부탁드립니다.
  • 완죤쵸보 2021/02/06 19:28 #

    binlog.dll은 본문에 첨부해두었습니다.
  • 2021/11/04 08:42 # 삭제 답글 비공개

    비공개 덧글입니다.
댓글 입력 영역


이 이글루를 링크한 사람 (블랙)

4