Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[10254] Re:C++ dll에서 export된 구조체? 를 델파이에서 쓸려면???
박지훈.임프 [cbuilder] 2355 읽음    2005-10-02 04:02
한번씩 겪는 일이죠. 그 dll을 제공해준 업체에서 생각없이 MFC에 의존하는 dll을 만들었기 때문인데...

CStringArrary 나 CArray같이 MFC 클래스를 인자로 주고받는 dll은 직접 델파이에서 호출할 방법이 없습니다. 역으로 생각해서 델파이에서 VCL 클래스, 즉 델파이 string(AnsiString)이나 TStringList를 인자로 주고받는 함수를 dll로 만들어도 비주얼 C++에서는 쓸 수 없는 것과 마찬가지입니다.

일반적으로 이런 경우에 해결할 수 있는 방법은 래퍼(wrapper) dll을 만들어서 쓰는 방법 뿐입니다. 새로운 dll을 만들어서 중간에서 MFC 타입을 표준인 PChar, 그러니까 C/C++의 char * 타입으로 변환해주는 거죠.

사실 이런 dll을 제공해주는 경우는 보통 다른 제품을 팔면서 SDK로서 주는 건데요. 상식이 있는 업체의 경우에는 다른 툴과도 호환이 가능한 dll, MFC 클래스를 쓰지 않는 dll을 만들어주는 것이 보통입니다. 좀 생각이 없는 업체라고 할 수 있죠. 납품하는 입장에서 고객사에 비주얼 C++만을 쓰라고 강요하는 셈이니까요. 얘기가 통할만한 업체이면 표준 C 방식의 dll을 달라고 요구하거나 혹은 wrapper dll을 달라고 요구해보시구요. 갑보다 무서운 을인 경우(업체가 너무 크고 압박이 강한 경우--;;)라면... 어쩔 수 없이 wrapper dll을 직접 만들어 써야겠습니다.

그럼...


Genie 님이 쓰신 글 :
: 업체에서 DLL을 받았는데
: 대중 밑에 구조인데
:
: CStringArrary 나 CArray를 어떻게
: 델파이에서 값을 받을지 막막하네요.
:
: Class DBInfo
: {
:   public:
:     int            nIndex;
:     CString        str;
:     CStringArray   strAy;   
: };
:
: typedef CArray<DBInfo, DBInfo>DB_InfoAy;
:
: __declspec(dllimport) _MsgStruct(DB_InfoAy *pdb_info);

+ -

관련 글 리스트
10251 C++ dll에서 export된 구조체? 를 델파이에서 쓸려면??? Genie 1145 2005/09/30
10254     Re:C++ dll에서 export된 구조체? 를 델파이에서 쓸려면??? 박지훈.임프 2355 2005/10/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.