# 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) 파일.아래에 표시 된 경로 따라 다음 전처리기를 검색 합니다. |
꺾쇠 괄호 양식 |
형식 라이브러리 파일 경로 따라 검색 하는 전처리기에 지시 합니다.
|
지역화 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 지시문도 최소 재빌드에 참여 하 고 미리 컴파일된 헤더 파일에 배치할 수 있습니다.참조 하십시오 미리 컴파일된 헤더 파일 만들기 에 대 한 자세한 내용은.
기본 형식 라이브러리 헤더 파일
기본 형식 라이브러리 헤더 파일 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_CoClass 및 IID_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++ 관련