위에서 말씀하신것 중에 저도 ActiveMIL 사용해봤는데..
AtiveMIL의 TImage는 빌더에서 ActiveX 컨트롤 인스톨하는 화면(Import)에서
직접 클래스 이름 바꿀 수 있습니다.
물론 cpp 헤더 파일 다 자동으로 생성되고요.
저는 그렇게 설치해서 문제 없었습니다.
카메라 연결해서 Grab까지는 아무 문제 없는데..
패턴매칭 콤포넌트 사용하는 중에 잘 안되는 문제가 있어서 도중 포기했습니다.
여러가지로 테스트를 해봤지만 결국 실패했지요.
지금은 ActiveMil 안쓰고 순수한 MIL 라이브러리만 쓰는데...
7.0 이상 버전은 패턴 매칭 콤포넌트도 잘 되나 모르겠군요.
6.x버전으로 하다가 실패해서 그 다음엔 해보지 않았거든요..
혹시 잘 된다면 알려주세요.
정말 빌더에서 ActiveX 사용하기가 쫌 문제가 많은거 같아요.
Active X가 오픈 표준이 맞는건지 의심스러울정도로..
Visual C++에서는 잘돌아가는 콤포넌트도 빌더에서는 안되는경우가 있고..
ActiveX 콤포넌트 설치했는데 제대로 동작안하면 환장한다니까요.
내가 소스를 가지고 있는것도 아니구..
암튼.. 저는 가능하면 빌더에서는 Active X 안쓰려고 합니다
빌더 5.0은 제가 가지고 있는게 없어서 못 드리겠네요. ^^;
김상구.패패루 님이 쓰신 글 :
: 안녕하세요. 김상구.패패루입니다. ^^ 요즘 좀 뜸했죠? 새로 직장 옮기자마자 프로젝트 하나 맡아서 하다보니 좀 정신이 없네요.
:
: 요즘 제 속을 썩이고 있는게 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-일 수도)좀 테스트해 보려구 하니까요.. 좀 여유되시면 올려주시면 고맙겠습니다. 수고하세요
|
그리고 어차피 패턴매칭은 그냥 MIL 써야죠. ActiveX로는 Grab정도까지만 하고... 테스트 해 보니 ActiveMIL에서도 실제 이미지 메모리 포인터를 얻는 것도 가능하더군요. 어제 TBitmap으로 이미지 가져오는 것 해 봤는데 잘 됩니다. 물론 MIL_ID도 얻을 수 있으니 두가지 병행해서 쓸 수 있겠죠. 좋은 방법 알려주셔서 고맙습니다.