성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
제가 운영하는 데브피아의 "Sys.NET" 클럽에 있던 질문/답변입니다. [질문: 이동현(magicast)] 안녕하세요. COM으로 구조체를 주고 받으려 합니다. 그런데, 일반적으로 구조체는 8byte로 record align이 되어 있습니다. idl에서나 vc++에서나 디폴트로 이렇게 잡혀있더군요. 그런데 구조체를 원하는 임의의 바이트로 pack 하려고 하면 어떻게 해야 하는지 궁금합니다. vc++에서는 #pragma라는 vc++ 확장 키워드를 이용하여 가능합니다만, idl에서는 어떻게 해야 할지 모르겠군요. 방법이 없을지도 모르겠다는 생각이 듭니다. -_-; 좋은 하루 되시기 바랍니다. [답변: 정성태(kevin25)] 흥미로운 질문이었네요. 실무에서 능히 있을 만한 상황입니다. 어쨌든, IDL 파일이 VC++과의 컴파일에서 그대로 이용되는 것은 아니지요. 따라서, IDL 파일을 컴파일해서 나오는 헤더 파일에서 직접 구조체를 찾아서 #pragma 구문을 집어넣는 방법이 있을 것입니다. 물론, IDL 파일이 다시 컴파일이 되어지면, 또 집어넣어야 하는 불편함이 있을 것입니다. 그런데... ^^ 혹시나 해서, IDL 구문에 pragma를 넣어보니, 이게 웬일입니까? 그대로 헤더 파일에 가져다 놓네요. 안심하시고, IDL에서도 pragma를 이용하셔도 됩니다. 노파심에서, 덧붙이는데요. IDL 파일에서 구조체를 선언할 때, #pragma pack( push, 1 ) typedef struct _ComplexData { char ch; int x; int y; } ComplexData; #pragma pack(pop) 위와 같이, 앞뒤로 pack 문장을 넣어주면 좋겠지요. ^^
첨부파일
스팸 방지용 인증 번호
1368
(왼쪽의 숫자를 입력해야 합니다.)