컴포넌트 라이브러리가 디자인타임 패키지와 런타임 패키지가 나뉘어져 있는 경우(대부분의 상용 라이브러리가 그렇습니다), 디자인타임 패키지에는 실제 컴포넌트의 동작에 필요한 코드는 하나도 없고 델파이 IDE에 필요한 코드, 즉 디자인타임 루틴만 있습니다. 그런데 디자인타임 루틴도 런타임 동작을 제어하기 위해 존재하는 것이므로 런타임 모듈들을 uses하게 됩니다. 이렇게 uses되어 있을 때 requires에 해당 디자인타임 패키지의 런타임 모듈들을 포함하고 있는 런타임 패키지를 지정해주지 않으면 디자인타임이 쓸데없이 런타임 루틴들을 다시 디자인타임에 포함시킵니다. 이런 이유로 디자인타임 패키지의 requires에서 런타임 패키지를 지정하고 있는 것입니다.
그런데, 보여주신 화면에서 디자인타임 패키지인 dclqrt60.dpk의 requires에 지정된 qrpt과 qrpt60은 둘 다 퀵리포트의 런타임 패키지입니다. 원래는 같은 파일입니다. (버전넘버 60을 dpk의 이름에 지정할 수도 있고 프로젝트 옵션에서 아웃풋인 bpl의 파일 이름에 덧붙이게 할 수도 있습니다) 아마도, 구하신 파일이 델파이의 기본 퀵리포트와 약간 다른 버전이거나, 아니면 누군가가 수정해서 그럴 수도 있습니다.
어쨌든, qrpt와 qrpt60은 같은 파일이기 때문에, 당연히 같은 이름의 클래스들이 동일하게 들어가 있습니다. 이 dclqrt60.dpk를 컴파일하면 같은 이름의 두 세트의 클래스들이 동시에 링크되어야 하기 때문에 에러가 난 것입니다. 그래서 둘중의 하나를 제거하시면 되는데요. 직접 컴파일중이시고, 이미 컴파일하신 런타임 패키지 프로젝트의 이름이 qrpt.dpk가 아닌 qrpt60.dpk이기 때문에 qrpt60을 남겨놓으시고 qrpt를 제거하셔야 합니다. (아마도, qrpt는 델파이에 기본 설치된 퀵리포트일 것입니다.)
주의하실 것은, 시스템을 뒤져서 같은 델파이 버전의 다른 퀵리포트 모듈이 있는지 확인해서 지우든지, 아니면 최소한 시스템 패스에서 제외시켜야 한다는 것입니다. qrpt60과 qrpt이 둘다 지정된 것으로 봐서는 아마도 델파이에 이미 둘 중의 하나가 로드된 상태일 것입니다. 설치하려는 파일 외에 이전에 존재하던 파일은 지워줘야 합니다. 아마, 위에서 requires에서 제거해야 하는 qrpt라는 이름의 dcp 파일, 즉 qrpt.dcp 파일이 존재할 것입니다. 다만, 버전 넘버가 없는 qrpt 파일과 그 디렉토리에 같이 있는 퀵리포트 dcu 파일들은 델파이의 기본 설치 파일일 것이기 때문에, 만에 하나를 위해 백업해두시는 것이 좋겠습니다.
그럼...
linuxman 님이 쓰신 글 :
: 추가적으로 quick reprt 6.0을 다시 설치하려고.. qrpt60.dpk 와 dclqrt60.dpk 를 구했습니다.
:
: 컴포넌트 컴파일 /설치하면.. 첨부된 그림과 같이 , qrt를 찾는데...
:
: 뭐가 잘못된건지 이유를 알수 없습니다.
:
: 수고하세요..
|