안녕하세요. 김상구.패패루입니다. ^^ 요즘 좀 뜸했죠? 새로 직장 옮기자마자 프로젝트 하나 맡아서 하다보니 좀 정신이 없네요.
요즘 제 속을 썩이고 있는게 ActiveX컨트롤들인데... 일부 ActiveX컨트롤들이 임포트는 되는데 팔래트에 나타나지 않는 현상이 있어서 계속 해결책을 찾고 있는 중입니다.
뉴스그룹을 뒤지다 보니 역시 tlibimp.exe 가 가지고 있는 문제인 듯 한데 비슷한 문제에 대한 해결책이 있더군요.
tlibimp를 콘솔에서 실행시키는데 비공식적으로만 존재하는 특수한 플래그 -Yu 옵션을 주면 되는 듯 합니다.
문제는... C++Builder 6에 포함되어 있는 tlibimp.exe에는 -Yu 옵션이 아예 막혀있네요. C++ Builder 5에 포함된 tlibimp를 써야 하는 분위기입니다. 혹시 C++ Builder 5로 개발하고 계신분 있으시면 bin폴더의 tlibimp.exe와 런타임 라이브러리 rtl50.bpl, tlib50.bpl등 tlibimp가 돌 수 있는 부속파일들 좀 올려주시면 고맙겠는데... ^^a
ActiveX 컨트롤 관련해서 발생하는 여러 문제들 중 이번에 해결한 것 하나 알려드리면
간혹 OCX에 포함된 컴포넌트 이름 중 VCL의 컴포넌트이름과 동일해서 아예 Import가 안되는 경우가 있습니다. 이런 경우엔 tlibimp를 콘솔로 띄워서 적절한 옵션을 주고(예를 들면 tlibimp -C+ -Co OCX파일명) 실행시키면 이름이 충돌하건 말건 무조건 cpp/h 파일들이 만들어지죠...
이 파일을 빌더에서 일단 열어서 문제되는 클래스의 이름들을 모두 바꿉니다(Replace 기능으로). 제 경우 Matrox의 ActiveMIL이 이런 경우였는데 TImage가 문제가 되길래 TAxMILImage로 바꿨습니다. 충돌이 안일어나는 TApp등도 다 바꿔버렸죠. TAxMILApp 이런식으로..
그다음엔 dcr파일을 빌더의 ImageEditor로 열어서 Bitmap리소스들의 이름도 역시 맞춰서 이름을 바꿔줍니다.
TIMAGE -> TAXMILIMAGE 이런식으로(모두 대문자로 해야 하는거 아시죠?)
그담엔... 패키지를 하나 만들어서 cpp파일을 추가하면 dcr도 함께 추가되고... 나머진 옵션들 입맛에 맞게 잘 조정하고 Install 하면 끝입니다. 아주아주 잘 돌아가네요.
아무튼간에.. C++ Builder 5에 있는 tlibimp에서 -Yu옵션(어쩌면 -Yu-일 수도)좀 테스트해 보려구 하니까요.. 좀 여유되시면 올려주시면 고맙겠습니다. 수고하세요
|