벡터사에서 제공하는 로그 변환 dll인 binlog.dll을 사용할 일이 있어 정리해본다.
4. C++ --> C#으로 변환 시 주요 자료형 주의한다.
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/11/04 08:42 # 삭제 답글
비공개 덧글입니다.