다음을 통해 공유


# import 지시문 (c, + +)

특정 C++

형식 라이브러리에서 정보를 통합 하는 데 사용 합니다.콘텐츠 형식 라이브러리의 COM 인터페이스를 설명 하는 대부분 C++ 클래스로 변환 됩니다.

#import "filename" [attributes]
#import <filename> [attributes]

매개 변수

  • filename
    가져올 형식 라이브러리를 지정 합니다.filename다음 중 하나가 될 수 있습니다.

    • 형식 라이브러리.tlb,.olb,.dll 파일 등을 포함 하는 파일의 이름입니다.키워드를 파일:, 각 파일 이름 앞에 있습니다.

    • $ 컨트롤의 형식 라이브러리입니다.키워드를 progid:, 각각 progid에 올 수 있습니다.예를 들면 다음과 같습니다.

      #import "progid:my.prog.id.1.5"
      

      Progid에 대 한 자세한 내용은 참조 하십시오 지정 하는 지역화 ID와 버전 번호.

      Note 크로스 컴파일러에서는 64 비트 운영 체제에서 컴파일하는 경우 컴파일러는 32 비트 레지스트리 하이브에서 읽을 수 수 있습니다.네이티브 64 비트 컴파일러를 사용 하 여 빌드하고 64 비트 형식 라이브러리를 등록 하려면 할 수 있습니다.

    • 형식 라이브러리의 라이브러리 ID입니다.키워드를 libid:, 각 라이브러리 ID에 올 수 있습니다예를 들면 다음과 같습니다.

      #import "libid:12341234-1234-1234-1234-123412341234" version("4.0") lcid("9")
      

      버전 또는 lcid를 지정 하지 않은 경우는 규칙 에 적용 됩니다 progid: 에 적용 됩니다 libid:.

    • 실행 파일 (.exe) 파일입니다.

    • (.Ocx)와 같은 형식 라이브러리 리소스를 포함 하는 라이브러리 (.dll) 파일입니다.

    • 복합 문서 형식 라이브러리를 포함 합니다.

    • 으로 이해 하는 다른 파일 형식에서 LoadTypeLib API입니다.

  • attributes
    하나 이상의 # import 특성.공백이나 쉼표를 사용하여 특성을 구분합니다.예를 들면 다음과 같습니다.

    #import "..\drawctl\drawctl.tlb" no_namespace, raw_interfaces_only
    

    또는

    #import "..\drawctl\drawctl.tlb" no_namespace raw_interfaces_only
    

설명

파일 이름에 대 한 검색 순서

파일 이름은 디렉터리 사양에 선택적으로 나옵니다.파일 이름을 기존 파일을 이름을 지정 해야 합니다.두 가지 형태의 구문 차이 경로가 불완전 하 게 지정한 경우 전처리기 형식 라이브러리 파일에 대 한를 검색 하는 순서입니다.

구문 형식

동작

따옴표 붙은 양식

형식 라이브러리 파일을 먼저 포함 하는 파일을 디렉터리에서에서 찾습니다 전처리기에 지시 하는 #import 문 및 포함 된 모든 파일은 디렉터리에 다음 (#include) 파일.아래에 표시 된 경로 따라 다음 전처리기를 검색 합니다.

꺾쇠 괄호 양식

형식 라이브러리 파일 경로 따라 검색 하는 전처리기에 지시 합니다.

  1. 해당 패스 환경 변수 경로 목록

  2. 해당 LIB 환경 변수 경로 목록

  3. /I가 지정 된 경로 (추가 포함 디렉터리) 컴파일러 옵션을 컴파일러는 다른 형식 라이브러리와 참조 된 형식 라이브러리에 대 한 검색은 제외 하 고는 no_registry 특성.

지역화 ID와 버전 번호를 지정합니다.

Progid를 지정 하면 해당 progid의 지역화 ID와 버전 번호를 지정할 수도 있습니다.예를 들면 다음과 같습니다.

#import "progid:my.prog.id" lcid("0") version("4.0)

지역화 ID를 지정 하지 않으면 progid는 다음 규칙에 따라 선택할 수 있습니다.

  • 하나 하나의 지역화 ID가 없는 경우에 사용 됩니다.

  • 첫 번째 버전 번호가 0, 9, 409 지역화 ID를 두 개 이상 있을 경우에 사용 됩니다.

  • 마지막으로 하나 이상의 지역화 ID 이며 그 중 0, 9, 409입니다 경우에 사용 됩니다.

  • 최신 버전 번호를 지정 하지 않은 경우에 사용 됩니다.

헤더 파일 가져오기로 만든

#importC++ 소스 코드에서 형식 라이브러리 내용을 다시 구성 하는 두 개의 헤더 파일을 만듭니다.주 헤더 파일 Microsoft 인터페이스 정의 언어 (MIDL) 컴파일러에 의해 하지만 컴파일러에서 생성 된 코드를 추가 하 고 데이터를 생성 하는 유사 합니다.주 헤더 파일 형식 라이브러리와 같은 기본 이름을 가진 플러스는.TLH 확장 합니다.보조 헤더 파일 형식 라이브러리와 같은 기본 이름으로가.TLI 확장 합니다.컴파일러에서 생성 하는 멤버 함수에 대 한 구현을 포함 하 고 포함 된 (#include)의 기본 헤더 파일입니다.

Byref 매개 변수를 사용 하는 dispinterface 속성을 가져오는 경우 # import __declspec를 생성 하지 않습니다 (속성이) 함수에 대 한 문의입니다.

두 헤더 파일은 /Fo (개체 파일 이름) 옵션에 의해 지정 된 출력 디렉터리에 배치 됩니다.가 다음 읽고 주 헤더 파일 명명 된 경우 컴파일러에서 컴파일되는 #include 지시문입니다.

다음 컴파일러 최적화 함께 제공 되는 #import 지시문:

  • 헤더 파일을 만들 때 형식 라이브러리와 동일한 타임 스탬프를 받습니다.

  • 때 #import 입니다 처리, 컴파일러 먼저 머리글 존재 최신 버전 인지 확인 하 고 있습니다.그렇다면 다음이 다시 필요가 없습니다.

#import 지시문도 최소 재빌드에 참여 하 고 미리 컴파일된 헤더 파일에 배치할 수 있습니다.참조 하십시오 미리 컴파일된 헤더 파일 만들기 에 대 한 자세한 내용은.

8etzzkb6.collapse_all(ko-kr,VS.110).gif기본 형식 라이브러리 헤더 파일

기본 형식 라이브러리 헤더 파일 7 가지 다룹니다.

  • 상용구 제목: 메모의 구성 됩니다 #include COMDEF에 대 한 문의.(헤더에 사용 되는 몇 가지 표준 매크로 정의) H, 및 다른 기타 설치 정보입니다.

  • 전달에 대 한 참조 및 형식 정의: 구조체 선언으로 구성 됩니다 struct IMyInterface 및 형식 정의 합니다.

  • 스마트 포인터 선언: 템플릿 클래스 _com_ptr_t 인터페이스 포인터를 캡슐화 하 고 호출할 필요가 없습니다 스마트 포인터 구현 된 AddRef, 릴리스, QueryInterface 함수.또한 숨기는 것은 CoCreateInstance 새로운 COM 개체를 만드는 호출 합니다.이 섹션에서는 매크로 문을 사용 하 여 _COM_SMARTPTR_TYPEDEF 형식 템플릿 특수화를 사용 하는 COM 인터페이스 정의 설정 하는 _com_ptr_t 템플릿 클래스.예를 들어, 인터페이스에 대 한 IMyInterface의.TLH 파일에 포함 됩니다.

    _COM_SMARTPTR_TYPEDEF(IMyInterface, __uuidof(IMyInterface));
    

    어떤 컴파일러 확장 됩니다.

    typedef _com_ptr_t<_com_IIID<IMyInterface, __uuidof(IMyInterface)> > IMyInterfacePtr;
    

    형식 IMyInterfacePtr 대신 원시 인터페이스 포인터를 사용할 수 있습니다 IMyInterface*.그 결과 다양 한 호출 필요가 없습니다 IUnknown 멤버 함수

  • 않음 선언: 클래스 정 및 반환 않음 개별 항목을 노출 시 키 지 다른 항목의 주로 구성 됩니다 ITypeLib:GetTypeInfo.이 섹션에서는 각 않음 형식 라이브러리에서 헤더에 따라 폼에 반영 되어 있는 TYPEKIND 정보.

  • (옵션) 이전 스타일 GUID 정의: 초기화가 GUID 명명 된 상수를 포함 합니다.이 폼의 이름입니다. CLSID_CoClassIID_Interface, MIDL 컴파일러에 의해 생성 된 것과 비슷한.

  • #include보조 형식 라이브러리 헤더에 대 한 문의입니다.

  • 바닥글 상용구: 현재 포함 됩니다 #pragma pack(pop).

머리글 바닥글 및 상용구 상용구 부분을 제외한 모든 섹션 네임 스페이스에서 지정 된 이름과 함께 묶여 있는 라이브러리 원래 IDL 파일에서 문을.형식 라이브러리 머리글에서 이름을 네임 스페이스 이름으로는 명시적 한정 하거나 다음 문을 포함 하 여 사용할 수 있습니다.

using namespace MyLib;

바로 뒤에 #import 문은 소스 코드에서입니다.

네임 스페이스를 사용 하 여 억제할 수 있습니다의 no_namespace 의 특성은 #import 지시문.네임 스페이스를 표시 하지 않음 이름 충돌을 일으킬 수 있습니다.여 네임 바꿀 수 있습니다 해당 rename_namespace 특성입니다.

컴파일러는 형식 라이브러리에서 현재 처리 하 고 필요한 모든 형식 라이브러리 종속성 전체 경로 제공 합니다.경로, 주석, 형식으로 형식 라이브러리 헤더에 기록 됩니다 (.TLH) 각각에 대 한 컴파일러 생성 하도록 형식 라이브러리를 처리 합니다.

형식 라이브러리를 참조 하는 다른 형식 라이브러리에 정의 된 형식에 포함 되어 있는 경우 다음을 합니다.TLH 파일 다음과 같은 종류의 메모를 포함 합니다.

//
// Cross-referenced type libraries:
//
//  #import "c:\path\typelib0.tlb"
//

실제 파일 이름에는 #import 설명 레지스트리에서 저장 된 상호 참조 된 형식 라이브러리의 전체 경로입니다.메모의 헤드에 형식 정의가 없기 때문에 오류를 발생 하는 경우 확인을 합니다.종속 형식 라이브러리를 보려면 TLH 먼저 가져와야 할 수도 있습니다.됩니다 (decl 지정자 없음) 구문 오류 (예: c2143 오류, C2146, C2321) C2501 가능성이 오류가 또는 C2433 ('데이터 선언에 사용할 수 없는 인라인') 컴파일하는 동안에.TLI 파일입니다.

종속성의 주석을 그렇지 않으면에 대 한 시스템 헤더에서 제공 하지 않는 한 다음 제공을 결정 해야는 #import 지시문 전에 일부 지점에서 #import 지시문의 오류를 해결 하려면 종속 형식 라이브러리.

에 대 한 자세한 내용은 기술 자료 문서를 참조 하십시오 "# import 래퍼 메서드가 될 액세스 위반" (Q242527) 또는 "사용할 때 컴파일러 오류 # import xml" (Q269194).기술 자료 문서는 MSDN Library 미디어 나 찾을 수 있습니다 https://support.microsoft.com/support/.

# import 특성

#import필요에 따라 하나 이상의 특성이 포함 될 수 있습니다.이 특성 형식 라이브러리 헤더의 내용을 수정 하도록 컴파일러에 지시 합니다.백슬래시 (\) 기호 줄 하나를 포함 하는 수 있습니다 #import 문의입니다.예를 들면 다음과 같습니다.

#import "test.lib" no_namespace \
   rename("OldName", "NewName")

자세한 내용은 # import 특성 (c, + +)를 참조하십시오.

최종 C++ 관련

참고 항목

참조

전처리기 지시문

컴파일러 COM 지원