.OBJs 없이 32비트 가져오기 라이브러리 또는 원본 만드는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 131313 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 지정된 소스 코드 또는 개체 모듈이 있는.DLL 가져오기 라이브러리를 만드는 방법에 대해 설명합니다. 있을 유틸리티입니다 없습니다 32비트.DLL, 가져오기 라이브러리를 만들 수 있는 같이 모두 16 비트 버전과 함께 없었습니다.

참고 : 이 방법은 타사 개발 도구로 생성된 DLL 작동하지 않을.

추가 정보

일반적으로.DLL 또는 내보내기 함수 또는 데이터 항목 가져오기 라이브러리 및 파일 내보내기 대상 빌드 생성될 때 연결 프로세스의 일부로. 하지만 가져오기 라이브러리를 함께 제공되지 않으므로 타사.DLL, 있는 경우 있습니다 하는 로드타임 동적 링크라고도 성공적으로 사용하여.DLL 사용하여 가져오기 라이브러리를 생성하는. 런타임 동적 링크라고도에 대한 가져오기 라이브러리가 필요하지 않습니다.

.DLL 지정된 가져오기 라이브러리를 만드는 방법은 두 가지입니다.
  • LIB는/DEF 사용하여 사용할.DEF 파일을 만들고: 명령.
  • 가져오기/내보내기 관계를 모방할 만든.OBJ 파일을 사용하고, 기능을 stub. 다음 LIB/DEF를 사용하여: 명령을 클릭하여 가져오기 라이브러리를 만듭니다.

.DEF 파일 만들기

유일한.DEF 파일의 소스 코드가 없는.DLL 가져오기 라이브러리를 만들려면 사용하거나 개체 모듈이 있는.DLL C 인터페이스를 통해 함수를 내보냅니다. 특히 함수는 C 호출 규칙을 사용하여 선언된 할. 일반적으로 사용되는 프로토타입을 함수를 _cdecl 특성이 지정됩니다. 특성이 지정된 경우 _cdecl 기본은 때/Gz (기본값은 _stdcall) 또는/Gr 는 (기본값은 _fastcall) CL 명령줄에서 지정하지 않았습니다. 이 제한은 이유는 모든 이름 앞에 밑줄 없이 자동으로 내보낼 LIB 유틸리티를 의한 가정 기반합니다. 전용 _cdecl 함수 이름을 마찬가지입니다.

C 인터페이스를 통해 내보낸 함수를 사용하여.DLL 지정된 다음 이 단계를 수행하여 가져오기 라이브러리를 만들어 있습니다.
  1. DUMPBIN/EXPORTS <.DLL 파일 이름 > 사용하여 의심되는.dll에 대한 내보낸된 기호를 목록을 얻습니다. 머리글은 서수 힌트 이름"테이블의 이름" 열에 기호가 나타납니다.
  2. DUMPBIN 출력 이름"열에 나열된 함수의 이름으로 EXPORTS 섹션에 포함된.DEF 파일을 만듭니다.
  3. _cdecl 함수의 호출 프로그램이 사용할 때 마찬가지로 기호가 표시됩니다. 방금.DEF 파일의 EXPORTS 섹션에 이 기호를 둡니다.
  4. LIB는/DEF 사용: <.DEF 파일 이름 > 가져오기 라이브러리 및 내보내기 파일을 생성합니다. 가져오기 라이브러리의 기본 이름을.DEF 파일의 기본 이름이 됩니다. /OUT 사용: 출력 라이브러리 이름을 제어할 수 있습니다.

함수 레이아웃 stubbing

C 이외의 호출 규칙을 사용하여 내보낸된 함수 상황을 약간 더 복잡합니다. 고려할 때 C++ 함수 및 복잡한 이름 데코레이션 구성표 관련된 특히 그렇습니다. 이 방법을 사용하려면 적어도 해당.DLL 인터페이스를 설명하는 헤더 파일이 있어야 합니다.

헤더 파일에 프로토타입 stubbed 함수를 만들려면
  1. 프로토타입 또는 선언에 "__declspec(dllimport)" 사용하는 경우 "__declspec(dllexport)" 변경하십시오
  2. C 소스 C 함수에 대한 값을 반환할 수 없고 'extern "C" ' 구문으로 사용되는 C++ 소스 코드 C 함수의 세미콜론을 바꾸기 함수가 있는 일치하는 한 쌍의 중괄호 ("{}") 함수 프로토타입을 종료합니다.
  3. C++ 함수의 (전역 또는 멤버) 값을 반환하는, 함수에 대한 더미 본문 및 적절한 형식의 더미 값을 반환해야 합니다. (함수에서 없는 return 문이 잘못되었습니다.) 이 클래스 멤버 함수를 함께 이동합니다. 이 절차의 목적은 이러한 더미 본문이 적용되지 올바른 가져오기 라이브러리를 생성하는 여러 LIB 유틸리티를 속일 데 점을 염두에 두십시오.
  4. 스텁 수 C++ 클래스에 대한 프로토타입 클래스 선언을 사용하여 멤버 함수를 제한 함수 인라이닝을 해제한 상태로 때 컴파일할 수 있습니다.
  5. 함수 인수 대개 헤더 파일 형식이 지정됩니다. Geta(int)입니다. Geta(int x) 더미 함수 본문을 추가하면 더미 인수의 식별자를 지정해야 합니다. 그렇지 않으면 C2055 생성된 오류.

예제

MYDLL.DLL 설명하는 헤더 파일을 모양은 경우:
// mydll.H

extern "C" __declspec(dllimport) void _stdcall Function(void);

class __declspec(dllimport) CMyClass {
     int a;
     long b;
public:
     int Geta(int);
     long Getb();
     CMyClass();
};
				
사용하여 가져오기 라이브러리를 빌드할 수 더미 소스 파일이 같습니다:
 // mydll.CPP

 extern "C" __declspec(dllexport) void _stdcall Function(void) {}

 class __declspec(dllexport) CMyClass {
      int a;
      long b;
 public:
      int Geta(int x) {return 111;}
      long Getb() {return 111;}
      CMyClass() {}
 };
				
함수를 제한 스텁, 일단.OBJ 파일에 소스 파일을 컴파일할 하려면 필요한 모든 경우:
CL 은/c/Ob0 mydll.CPP
참고: 함수 인라이닝을 비활성화 CMyClass 정의된 함수의 기호 차세대 강제로 필요합니다. 함수 인라이닝을 사용하는 않았습니다 컴파일러가 있는지 번역 단위가 멤버 함수 참조가 없는 함수 본문 취소할 경우 있도록 알 것입니다. Visual C++ CL 명령 줄 참조 인라인 함수 확장 최적화에서 참조하십시오.

LIB는/DEF 사용하려면.OBJ 파일을 일단: 가져오기 라이브러리 (.LIB) 만들고 내보내기 파일 (.EXP):
LIB/DEF: mydll.OBJ
LIB 명령에 대한 자세한 내용은 Visual C++ 온라인 설명서에서 "LIB 참조" 참조하십시오.

또한 Microsoft 기술 자료에 있는 다음 문서를 참고하십시오.
14048532 비트 DLL 파스칼식 비슷한 기호 내보내기

속성

기술 자료: 131313 - 마지막 검토: 2004년 6월 29일 화요일 - 수정: 2.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • The Microsoft Library Manager (LIB.EXE)?을(를) 다음과 함께 사용했을 때
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 4.0 Standard Edition
    • Microsoft Visual C++ 5.0 Standard Edition
키워드:?
kbmt kb3rdparty kbcode kbhowto KB131313 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
더 이상 지원되지 않는 제품의 KB 내용에 대한 고지 사항
이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com