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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[572] DLL에서 가상함수로된 인터페이스 클래스는 VC++과 호환 안된다.
김태선 [jsdkts] 8312 읽음    2006-02-24 14:57
이건 팁인지 아닌지 모르겠군요.
하지만 모르고 시도하다가 시간 낭비를 하는 것보다 미리 아는게 좋을거 같아서 올립니다.

DLL과는 함수를 통해 정보를 교환하고 기능을 제어할 수 있습니다.
하지만 함수를 나열하자면 귀잖습니다.
그래서 인터페이스용 클래스를 사용하게 되는데,
문제는 VC++과 빌더로 개발한 DLL을 연결할때 입니다.

문제는 빌더와 VC++이 가상함수에 대한 Virtual Table(VTable: 가상함수 테이블)을 처리하는
방법에 약간의 차이가 있어서 호환되지 않는다 입니다.

그래서 COM 처럼 DLL에서 클래스 생성후에 그 포인트를 받아 클래스로 엑세스하는 것이
같은 빌더의 EXE와 DLL 간에는 문제가 없어도
빌더 EXE 와 VC DLL 과는 안된다는 것입니다.

VC  DLL간에는 그냥 옛날 처럼 함수 교환 방식을 사용해야 합니다.

이렇게 된 이유는  호환을 위해 공유해야할 DLL 관련 정보나 Name mangle 방식에 대해
MS 쪽에서 공개를 하지 않기 때문으로 알고 있습니다.
김태선 [cppbuilder]   2008-02-19 17:55 X
VC++ C++Builder Delphi는 순수가상함수와 멤버변수로 구성된
클래스를 통해, 서로의 클래스가 공유될 수 있음을 확인했습니다.
방법은 강좌란에 있습니다.

+ -

관련 글 리스트
572 DLL에서 가상함수로된 인터페이스 클래스는 VC++과 호환 안된다. 김태선 8312 2006/02/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.