VS(Visual Studio) 에서는 없는 개념(없다는건 아니고 다른이름이죠) 이라 VS진영에서 넘어오신 분들은 처음에 당혹해 하는 부분입니다만..
borland 는 (물론 C++ Builder와 Delphi) 에서는 VCL 이라는 라이브러리를 사용합니다.
VCL
은 VC++ 에서 MFC 정도라고 할까요? 사실 Windows API를 가지고 Windows Application 을 만드는것은
여간 복잡한(나름대로 익숙하면 그렇지만은 않은) 과정이 많아 이를 단순화 시킨게 MFC라면 VCL도 이러한 관점과 같습니다.
사실 VCL 은 Borland 의 오래전의 OWL(정확한지 기억이 가물가물) 에서부터 유래 합니다.
즉 Windows 의 여러가지 콘트를들을 Visual 하게 작업할 수 있도록 만들어서 제공하는 라이브러리가 VCL입니다.
이
러한 VCL의 주축은 Package Library 에서부터 출발 합니다. VC++에서 DLL 을 만들어 사용하듯이
borland에서도 물론 DLL을 사용할 수 있습니다.. 또한 VCL 이라는 package library 를 사용하고 있습니다.
이러한 package 라이브러리를 만들어 주는 프로젝트가 package library 프로젝트 입니다. 이렇게 만든 프로젝트의
결과물이 바로 bpl 파일 입니다. Borland Package Library 의 약자 이죠.
즉 VC++ 에서 DLL project를 하면 결과가 dll 이 나오듯이 borland의 package library project를 컴파일 하면 바로 bpl 이 나옵니다.
우리가 흔히 component 라고 판매하거나 아니면 다른사람이 만든것을 가져다 쓸수 있는 구조가 바로 bpl 입니다.
그러나 bpl 만 있으면 사실 프로그램에 직접 가져다 같이 컴파일 할 수 없습니다.
DLL 파일을 우리가 사용할려면 사실 DLL 에 있는 함수가 어떤것이 있는지를 선언해주는 header가 같이 있어야
우리의 코드에 적용할 수 있는 이치와 같이 bpl 도 header 가 있어야 합니다.
이러한 bpl을 가져다 다른프로그램에 접목시켜 프로그래밍을 하려면 bpi 파일과 header 파일이 있어야 합니다.
또한 bpl 에 만약 폼(Form) 이 같이 포함되어 있으면 해당 dfm (Design Form 의 약자인지 사실 Delphi Form의 약자인지는 혼동) 파일도 같이 있어야 합니다.
우리가 어떠한 판매되는 package library(component 라고 흔히 합니다) 를 구입하면 source code수준까지 구입하지 않을경우 바로 bpl + bpi + dfm 이 같이 들어 있습니다.
그리고 실제 실행파일을 실행하는 환경에서는 bpl 만 있으면 됩니다. (bpi 및 dfm 은 개발자 환경 파일이라 생각하면 됩니다).
Install
이라는것은 package library 즉 bpl 파일을 BDS (BCB6 나 그전도 마찬가지) 에 등록해야 사용할 수
있습니다. 이를 Install Package 라고 합니다. 즉 package library를 BDS에 등록하는 것이죠 프로그램에
쓸수 있도록.
C# 으로 .NET 환경에서 프로그래밍 하신 경험이 있으시면 .NET Assembly 라는 용어를 들어 보셨으리라 생각 합니다. bpl 은 이런 Assembly 와 같은 개념이라 생각하시면 됩니다.
제
생각에는 C# 은 바로 언어구문은 C , C++, Java 구문을 많이 따르고, 소스 파일 구문은 Delphi Pascal 을
많이 따르고(Header 를 사용하지 않고 using 문을 쓰는점에서) Assembly 개념은 bpl 을 많이 따른 그야말로
장점을 모아 모아 만들긴 한거 같습니다...(그렇다고 만능은 아니고요)
Visual Studio (C#의 경우) 는 ActiveX 나 COM 을 직접 참조하여 프로그래밍 할수 있습니다. .NET 환경에서도 마찬가지고요... 그러나 C++ Builder에서는 이를 직접 사용하지 못합니다.
앞에서 우리가 ActiveX 에서 몇개의 C++ 파일을 BCB 에서 자동으로 만들어 주는 과정을 거쳤습니다.
여기에서 만들어지는것은 몇가지 C++ 와 바로 Type Library 라는 것을 만들어 줍니다. Type Library 라는것은
그전의 object 파일이 어떤 컴파일러든 링크 가능하던 시절이 지나고 서로 호환을 갖지 못하게 되었으며 이로 인해
MS에서는 type library라는 것을 제공하게 됩니다.
type
library 는 간단히 말하면 어떤 코드(라이브러리 코드 , 컴파일된 object code 라 생각할 수 있죠) 를 외부에서
사용할때(LINK 할때) 연결하는 규칙이라 생각하시면 됩니다. OLE 프로그래밍을 해보셨으면 아마 이러한 작업을 했던 경험이
있으실 겁니다.
Property 와 Method 를 만들어 붙이는 것이죠..
즉 BCB 는 ActiveX에서 이러한 소스코드와(실제 소스코드가 아니고 해당 active x에 연결하는 구조) 와 type library 를 만들어 내는 것입니다.
이렇게 만든 코드를 package 라이브러리로 만들어서 바로 bpl을 만들어 주면 BCB 나 BDS2006에서 사용할 수 있는 것 입니다.
처음 접하시는 분들은 좀 어려운 부분이기는 하나.. 매우 중요한 부분으로 Borland 툴의 우수한 기술력이라고 생각 합니다.
OCX를 이용하면 많은 부분을 처리할 수 있습니다. OCX는 기존의 DLL보다는 진일보한 인터페이스를 제공하고 있으니까요..
가령 Acrobat Reader를 자신의 폼에 배치하여 사용할 수도 있습니다.
지금으로서 (.NET을 제외하면) Borland 와 VS 와 연결 창구는 ActiveX 밖에 없는것 같습니다.
==========================================================================================볼랜드포럼 - 둘리님 글에서 발췌..
==========================================================================================
2006.07.14