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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[115] [팁] IMPDEF.EXE Option 정리
박지훈.임프 [cbuilder] 8115 읽음    2001-07-26 14:56
이 팁은 담비님(천리안 FREKBS)님이 99년 1월 18일에 천리안 프로그래머포럼에 올리신 것입니다.
담비님으로부터는 전제하여 올리는 데 대해 허락을 받았습니다.
좋은 정보를 공유하도록 허락해주신 담비님께 감사드립니다.

-----------------------------------------------------------------------
안녕하세요! 담비입니다.

본 문서는 IMPDEF.EXE의 Option을 정리한 내용입니다.

본 문서는 C++ Builder와 함께 제공되어지는 HELP FILE을 기초로 작성되었으며
내용상의 오류 혹은 추가 및 변경되어져야 할 사항을 발견하시면 메일 주시면
감사하겠습니다. 보내주신 내용은 검토 후 반영하여 다시 올리도록 하겠습니다.

  frekbs@chollian.net
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  모듈정의 파일 관리자 사용하기 (IMPDEF)
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  임포트 라이브러리들을 윈도우의 DLL에 있는 함수들에게 접근할 수있도록 해준다.
  IMPDEF은 인수로  DLL의 이름을 받아들여 DLL에 의해 엑스포트된 함수들의 이름을
  가지는 엑스포트 섹션과 함께 모듈정의 파일을 생성하여 출력한다.
  구문은 다음과같다.

  IMPDEF DestName.DEF SourceName.DLL

  위의 명령은 SourceName.DLL로부터 DestName.DEF라는 모듈정의 파일을 생성한다.
  모듈정의 파일의 결과는 아래와 비슷한 형식을 갖출것이다.

  LIBRARY     FileName
  DESCRIPTION 'Description'
  EXPORTS
              ExportFuncName              @Ordinal
          .
          .
          .
              ExportFuncName              @Ordinal

  여기에서
  . FileName은 DLL의 루트(root)파일명이다.
  . Description은 DLL이 DESCRIPTION문을 포함시킨 모듈 정의 파일과 이미 연결되어
    있을 경우 DESCRIPTION문의 값이다.
  . ExportFuncName은 엑스포트된 함수의 이름이다.
  . Ordinal은 그 함수의 순서값이다.(정수이다.)

  DLL내의 클래스
  ~~~~~~~~~~~~~~
  IMPDEF는 C++ 클래스를 사용하는 DLL에게 상당히 유용하다. 클래스를 정의할 때
  __declspec (또는 _export) 키워드를 사용한다면  인라인이 아닌 클래스의 모든
  멤버함수들과 정적 데이터 멤버들이 엑스포트된다. IMPDEF가 모듈정의 파일을
  만들도록 하는 것은 모든 엑스포트된 함수들과  자동적으로 멤버 함수들과 정적
  데이터 멤버들을 포함하여 리스트를 작성하기 때문에 상당히 쉽다.
  이들 함수의 이름은 세분되므로 모듈 정의 파일의 EXPORTS 섹션에 그것을 모두
  수록하여 모듈 정의 파일로부터 임포트 라이브러리를 생성하게 하는 것은 무척
  번거러운 일이다. 만약 IMPDEF를 사용하여 모듈 정의 파일을 생성하면 IMPDEF가
  엑스포트된 각 함수들을 위한 순서값을 포함시킨다. 엑스포트된 이름이 세분될 경우
  IMPDEF는 그 함수의 세분화되지 않은 서열명도 함수 엔트리 다음에 주석으로
  포함시킨다. 그러므로 C++클래스를 사용한 DLL을 위해 IMPDEF가 생성한 모듈 정의
  파일은 다음과 같이 된다.

  LIBRARY     FileName
  DESCRIPTION 'Description'
  EXPORTS
              MangledExportFuncName  @Ordinal ; ExportFuncName
          .
          .
          .
              MangledExportFuncName  @Ordinal ; ExportFuncName

  여기에서
  . FileName은 DLL의 루트(root)파일명이다.
  . Description은 DLL이 DESCRIPTION문을 포함시킨 모듈 정의 파일과 이미 연결되어
    있을 경우 DESCRIPTION문의 값이다.
  . MangledExportFuncName은 세분된 이름을 제공한다.
  . Ordinal은 그 함수의 순서값이다.(정수이다.)
  . ExportFuncName은 함수의 원래 이름이다.

  DLL내의 함수들
  ~~~~~~~~~~~~~~
  IMPDEF는 DLL내의 엑스포트된 모든 함수들을 리스트한 수정가능한 소스 파일을
  생성한다.  이 .DEF 파일을 편집하여 특정 응용프로그램에 사용할 수 있도록 하고자
  하는 함수들만을 포함시킨 뒤에 편집된 .DEF파일상에서 IMPLIB를 실행한다. 그러면
  DLL 엑스프트 함수의 특정 부분 집합을 위한 임포트 정보가 들어 있는 임포트
  파일브러리가 생성된다.
  예를 들어, 여러 응용프로그램에 사용되는 함수를 제공하는 DLL을 분산시키고
  있다고 가정한다. 그 DLL 내의 모든 엑스포트 함수들을 _export를 사용하여
  정의되어 있다.  IMPLIB를 사용하여 DLL을 위한 하나의 도입 라이브러리를 만들고
  그 도입 라이브러리를 DLL과 함께 보급하면 DLL의 모든 엑스포트 함수들에게 임포트
  정보를 제공할 수 있다. 임포트 라이브러리는 어떤 응용프로그램에서나 연결할 수
  있으므로 특정 응용프로그램이 그것이 사용하는 모든 DLL함수들을 그 모듈 정의
  파일의 IMPORTS 섹션에 포함하게 할 필요가 없어진다.
  이제, DLL의 엑스포트 함수들을 일정한 수만큼만 특정 응용프로그램에게 주고
  싶다고 하자. 그리고 주문형으로 구성한 임포트 라이브러리가 그 애플리케이션에게
  연결되게 하고 싶다면 이 임포트 라이브러리는 응용프로그램이 사용할 함수의 부분
  집합을 위한 임포트 정보만을 제공한다. 그 뒤, DLL 내의 다른 엑스포트 함수들은
  모두 그 클라이언트 응용프로그램에 가려져 있게 된다.
  이상의 조건을 충족시키는 임포트 라이브러리를 생성하려면 콤파일되고 연결된
  DLL상에서 IMPDEF를 실행하면 된다. IMPDEF는 DLL의 모든 엑스포트 함수를 수록하는
  EXPORTS 섹션을 가진 모듈 정의 파일을 산출한다. 사용자는 그 모듈 정의 파일을
  편집하여 주문형으로 구성한 임포트 라이브러리에서 원하지 않는 함수들을 EXPORTS
  섹션으로부터 삭제하면 된다. 원하지 않는 엑스포트 함수들을 삭제한 뒤에 모듈정의
  파일상에서 IMPLIB를 실행한다. 그 결과로, 모듈 정의 파일의 EXPORTS 섹션에
  수록된 전송 함수들을 위한 임포트 정보만이 들어있는 임포트 라이브러리가
  생성되어진다.



+ -

관련 글 리스트
115 [팁] IMPDEF.EXE Option 정리 박지훈.임프 8115 2001/07/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.