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

컴포넌트/라이브러리
Delphi/C++Builder Programming Components&Libraries
[435] TBX 2.2 Alpha를 Toolbar2000 2.1.8과 통합시키기 위한 diff 파일
박지훈.임프 [cbuilder] 10968 읽음    2006-01-11 17:43
DrawCaptionTempW.OBJ 73B C++빌더6에서 패키지 컴파일하기 위해 필요...
제목이 좀 길지만...
현재 TBX의 최신 버전인 2.2 알파를 그보다 더 최신 버전인 툴바2000의 2.1.8과 통합시키기 위한 diff 파일입니다.
2.1.6용의 diff 파일을 제가 직접 수정한 파일이구요.
(이 노가다는 더 안할려구 했는데.. 2.1.7에서 2.1.8로의 변경이 적어서 그냥 또 해봤습니다)
사용법은 아래의 Toolbar2000이나 TBX 관련 글을 참고하시길...
양용성 [ysyang]   2006-01-11 18:58 X
감사히 쓰겠습니다.
zepirox [zepirox]   2006-01-12 11:17 X
안녕하세요.
해당 파일을 다운로드하고 tbx2.2 alpha 버전과 Toolbar2000 2.1.8 버전 다운받고
올려주신 파일로 Toolbar2000에 copy후 패치하고, Toolbar2000 bpk 파일을 로드하여
Compile 하면 아래와 같이 세개의 에러가 발생됩니다. 왜 그런지요?
이렇게 저렇게 해 보고 있지만 잘 안되네요.. T.T

[Pascal Error] TB2Dock.pas(496): Property 'ParentBackground' does not exist in base class

[Pascal Fatal Error] TB2Dock.pas(591): Could not compile used unit 'C:\Toolbar\tb2k-2.1.8\Source\TB2Hook.pas'

[Linker Error] Unresolved external 'DrawCaptionTempW' referenced from C:\TOOLBAR\TB2K-2.1.8\SOURCE\TB2DOCK.OBJ
박지훈.임프 [cbuilder]   2006-01-12 20:05 X
zepirox님,
델파이나 C++빌더 6 버전에서 컴파일하셨군요. 7 이상 버전에서는 생기지 않는 에러입니다. 그 부분은 TBX에서 사용한 'ParentBackground' 속성 때문인데, 이 속성은 델파이7 이상 버전에서만 사용가능하고 6 이하 버전에는 없습니다.

만약 7 이상 버전은 전혀 사용하지 않으신다면 해당 부분(TB2Dock.pas에 두군데 있습니다)을 삭제해버리면 되고, 같이 사용해야 한다면 ParentBackground 속성을 사용하는 부분이 컴파일러 버전을 체크하도록 다음과 같이 앞뒤로 컴파일러 디렉티브를 붙여주면 됩니다.

{$IFDEF JR_D7}
    property ParentBackground default False;
{$ENDIF}
...
{$IFDEF JR_D7}
  ParentBackground := False;
{$ENDIF}
zepirox [zepirox]   2006-01-13 15:01 X
답변 감사드리구요...
마지막 에러에 있는 DrawCaptionTempW도 못잡겠네요.
header 파일에 보면 extern "C" __stdcall......로 정의가 되어 있는데도 못찾는 건가요?
참고로 C++ 빌더 6버전을 사용하고 있습니다.
그리고, 말씀하신대로 그 부분 삭제하고 하니, 위의 두 에러는 사라졌는데요.
마지막 에러가 제 능력으론.......-.-ㅋ
박지훈.임프 [cbuilder]   2006-01-13 20:54 X
DrawCaptionTempW 함수는 아마도 Win32 API의 undocumented 부분인 것 같군요. 방금 확인해보니 user32.dll에 포함되어 있는데, user32.h 파일에는 없네요.

저는 컴맨드라인에서 dcc32를 이용해서 컴파일하기 때문에 패키지 빌드할 때 에러가 안났는데, 방금 확인해보니 C++빌더6 IDE 안에서는 링크 에러가 나는군요.

C++에서는 에러가 날 수밖에 없는 것이,  델파이에서는 dll에서 엑스포트된 포함된 함수를 호출하기 위해서는 그냥 소스에서 적어주면 땡이지만, C++에서는 임포트 라이브러리 lib 파일(혹은 obj)이 반드시 필요합니다.

해결책은 그리 어렵지 않습니다. DrawCaptionTempW를 포함한 임포트 라이브러리, 그러니까 lib 혹은 obj 파일만 있으면 되죠. DrawCaptionTempW.OBJ를 만들어서 첨부파일로 추가로 올렸습니다. 이걸 C++빌더 패키지에 추가로 포함시키고 컴파일하면 잘 빌드될 겁니다.

이 obj 파일을 만드는 방법은 그리 어렵지 않습니다.

1. user32.dll에서 implib.exe로 임포트 라이브러리 user32a.lib 파일을 만들어냅니다.
implib user32a.lib c:\winnt\system32\user32.dll

2. 이 user32a.lib은 C++빌더에 기본 포함된 user32.lib파일과 거의 똑같고 우리가 필요한 건 오직 DrawCaptionTempW 함수 부분 뿐이므로, tlib을 이용해서 이 부분을 추출하면 됩니다.
tlib user32a.lib *DrawCaptionTempW
zepirox [zepirox]   2006-01-14 07:58 X
감사합니다.
임프님께서 말씀하신대로 만들어보니, 제대로 만들어지네요..
패키지에 추가하고 컴팔함 해 볼랍니다.

감사합니다.
좋은 하루되세요.
HiwayStar [hiwaystar]   2006-03-18 20:34 X
여러분들은 한글 문제 없나요?
직접고쳐서 쓰시는지 아님 프로퍼티로 설정해야되는지 궁금합니다...
하안인 [hurco]   2007-04-24 10:39 X
TBXGraphics.hpp(299);E2303 Type name expected.
  __property OnChange; 에서 에러가 나오는데요....

TBXUtils.hpp(209) : E2040 Declaration terminated incorrectly.

+ -

관련 글 리스트
435 TBX 2.2 Alpha를 Toolbar2000 2.1.8과 통합시키기 위한 diff 파일 박지훈.임프 10968 2006/01/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.