Share via


#Import směrnice (C++)

Konkrétní C++

Pro informace z knihovny typů.Obsah knihovny typů je převeden do tříd C++, převážně popisující rozhraní COM.

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

Parametry

  • název_souboru
    Určuje typ knihovny pro import.filenamemůže být jeden z následujících:

    • Název souboru, který obsahuje knihovnu typů, například soubor dll, .olb a .tlb.Klíčové slovo, soubor:, lze předcházet každý název souboru.

    • Progid ovládacího prvku v knihovně typů.Klíčové slovo, progid:, lze předcházet každý progid.Příklad:

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

      Další informace na identifikátory ProgID, viz zadání ID lokalizaci a číslo verze.

      Všimněte si, že při kompilaci pomocí křížového kompilátoru na 64bitový operační systém, kompilátor bude moci přečíst pouze 32 bitů podregistru.Můžete vytvořit a zaregistrovat knihovnu typů pro 64bitové pomocí nativního kompilátoru 64 bit.

    • ID knihovny knihovny typů.Klíčové slovo, ID knihovny:, lze předcházet každé ID knihovny.Příklad:

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

      Pokud určíte, verze nebo lcid, pravidla , u progid: také pro ID knihovny:.

    • Soubor spustitelný soubor (EXE).

    • Soubor knihovny (DLL) obsahující prostředek typu knihovny (například ocx).

    • Složený dokument hospodářství knihovny typů.

    • Jiném formátu souboru, který může být srozumitelné LoadTypeLib rozhraní API.

  • attributes
    Jeden nebo více #import atributy.Samostatné atributy s mezerami nebo čárkami.Příklad:

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

    -nebo-

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

Poznámky

Pořadí hledání pro název souboru

název souboru volitelně předchází specifikaci adresáře.Název existujícího souboru musí být název souboru.Rozdíl mezi dvě různé formy je pořadí, ve kterém preprocesoru vyhledává soubory typu knihovny při cesta zadána neúplně.

Syntaxe formuláře

Akce

Nabízené formuláře

Pokyn preprocesoru, které chcete vyhledat soubory knihovny typu nejprve v adresáři soubor, který obsahuje #import prohlášení a poté v adresářích jakékoli soubory, které obsahují (#include) souboru.Preprocesoru pak prohledá podél cesty níže.

Formulář úhlová závorka

Pokyn předprocesoru hledání souborů typu knihovny podél následující cesty:

  1. CESTU seznamu Cesta proměnné prostředí

  2. LIB seznamu Cesta proměnné prostředí

  3. Cesty určené parametry /I (Další adresáře obsahují) volba kompilátoru, s výjimkou ji kompilátor je hledání pro knihovnu typů, z jiného typu knihovny s odkazem no_registry atributu.

Zadání ID lokalizaci a číslo verze

Zadáte-li progid, můžete určit také lokalizace ID a verze číslo progid.Příklad:

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

Pokud nezadáte lokalizace ID, identifikátor progid je zvoleným podle následujících pravidel:

  • Pokud existuje pouze jedno ID lokalizace, že jeden je používán.

  • Pokud existuje více než jedno ID lokalizace, první s číslem verze 0, 9 nebo 409 použit.

  • Pokud existuje více než jedno ID lokalizaci a žádný z nich jsou 0, 9 nebo 409, použije se poslední.

  • Pokud nezadáte číslo verze, bude použita poslední verze.

Záhlaví souborů vytvořených při importu

#importvytvoří dva soubory záhlaví rekonstrukce obsah knihovny typu ve zdrojovém kódu jazyka C++.Primární záhlaví souboru je podobná vyrobené kompilátorem jazyk Microsoft rozhraní definici jazyka (MIDL), ale s další kód generovaný kompilátorem a data.Primární záhlaví souboru má stejný základní název jako knihovnu typů plus a.Rozšíření na nejvyšší úrovni.Sekundární Hlavičkový soubor má stejný název základní jako knihovnu typů s.Rozšíření TLI.Obsahuje implementace pro generovaný kompilátorem členské funkce a je součástí (#include) v primární záhlaví souboru.

Pokud import omezené rozhraní IDispatch vlastnost, která používá parametry typu byref nevygeneruje #import __declspec (Vlastnost) příkazu funkce.

Oba soubory záhlaví jsou umístěny ve výstupní adresář určený možnost /Fo (název objektu souboru).Jsou potom číst a zkompilován kompilátorem, jako by byl název primární záhlaví souboru #include směrnice.

Součástí optimalizace následující kompilátoru #import směrnice:

  • Soubor záhlaví při vytvoření je uveden jako knihovnu typů stejné časové razítko.

  • Při #import je zpracován, kompilátor nejprve zkontroluje Pokud záhlaví existuje a zda je aktuální.Pokud ano, pak nemusí být vytvořen znovu.

#import Směrnice také účastní minimální rebuild a mohou být umístěny v souboru předkompilovaný záhlaví.Viz Vytváření předkompilována záhlaví souborů Další informace.

8etzzkb6.collapse_all(cs-cz,VS.110).gifPrimární typ knihovny záhlaví souboru

Primární záhlaví souboru knihovny se skládá ze sedmi částí:

  • Často používaný text nadpisu: obsahuje komentáře, #include COMDEF prohlášení.H (definující některé standardní makra použít v záhlaví) a další informace o různých nastavení.

  • Odkazy a funkce TypeDef dál: sestává z prohlášení strukturu jako struct IMyInterface a funkce TypeDef.

  • Inteligentní ukazatel prohlášení: Šablona třídy _com_ptr_t je implementace smart ukazatele, která zapouzdřuje ukazatele rozhraní a odstraňuje nutnost volání AddRef, verze, QueryInterface funkcí.Navíc skryje CoCreateInstance ve vytváření nového objektu COM volat.Tento oddíl používá příkaz Makro _COM_SMARTPTR_TYPEDEF stanovit funkce TypeDef rozhraní COM se specializace šablony z _com_ptr_t šablonu třídy.Například pro rozhraní IMyInterface,.Nejvyšší úrovni soubor bude obsahovat:

    _COM_SMARTPTR_TYPEDEF(IMyInterface, __uuidof(IMyInterface));
    

    který bude rozbalte kompilátor:

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

    Typ IMyInterfacePtr lze použít namísto ukazatele rozhraní raw IMyInterface*.V důsledku toho není třeba volat různé IUnknown funkce členů

  • Volání TypeInfo prohlášení: především se skládá z definice třídy a dalších položek vrácených položek jednotlivých volání typeinfo vystavovali ITypeLib:GetTypeInfo.V této části každého volání typeinfo z knihovny typů se odráží v záhlaví formuláře, která je závislá na TYPEKIND informace.

  • Nepovinnou definici stylu GUID: Inicializace pojmenované konstanty identifikátoru GUID obsahuje.Tyto názvy formuláře jsou CLSID_CoClass a IID_Interface, podobné těm, které jsou generovány jazyk MIDL kompilátoru.

  • #includepříkaz pro záhlaví knihovny sekundárního typu.

  • Často používaný text zápatí: aktuálně obsahuje #pragma pack(pop).

Uzavřená v oboru názvů všech sekcí, s výjimkou záhlaví často používaný text zápatí často části a s jeho název určený knihovnu prohlášení v původním souboru IDL.Názvy v záhlaví typu knihovny můžete použít explicitní kvalifikace s názvem oboru názvů nebo včetně následující prohlášení:

using namespace MyLib;

ihned po #import prohlášení ve zdrojovém kódu.

Obor názvů lze potlačit pomocí no_namespace atribut #import směrnice.Však potlačení oboru názvů může vést k Kolize názvů.Obor názvů lze také přejmenovat tak, rename_namespace atributu.

Kompilátor obsahuje úplnou cestu k žádné závislosti typu knihovny, podle typu knihovny, kterou právě zpracovává.Cesta je zapsán, ve formě poznámky, do záhlaví typ knihovny (.Nejvyšší úrovni), že kompilátor vygeneruje pro každou zpracovat knihovny typů.

Knihovna typů obsahuje odkazy na typy definované v jiných knihovnách typu pak bude.Nejvyšší úrovni soubor bude obsahovat komentáře řazení následující:

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

Skutečný název souboru #import komentář je úplná cesta knihovny typů referencí, jako jsou uloženy v registru.Pokud se vyskytnou chyby, které jsou kvůli chybějícím definice typu, kontrola poznámky v čele.Nejvyšší úrovni vidět knihoven závislé typu muset nejprve importovat.Pravděpodobné chyby jsou chyby syntaxe (například C2143, C2146, C2321), C2501 (chybí decl specifikátory) nebo C2433 ("vložené" není povoleno prohlášení dat) při kompilaci.Soubor TLI.

Musíte určit, které závislost komentáře není stanoveno jinak v záhlaví systému a potom zadejte #import bodu před směrnice #import směrnice knihovny typů závislé na chyby vyřešit.

Další informace naleznete v článku znalostní báze Knowledge Base "#import Wrapper metod může způsobit narušení přístupu" (Q242527) nebo "chyby kompilátoru při použití #import s XML" (Q269194).Články znalostní báze Knowledge Base můžete najít v knihovně MSDN média nebo na adrese https://support.microsoft.com/support/.

#Import atributy

#importnepovinně obsahovat jeden nebo více atributů.Tyto atributy sdělujete kompilátoru, aby změny obsahu záhlaví knihovny typů.Zpětné lomítko (\) symbol lze zahrnout další řádky v jednom #import prohlášení.Příklad:

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

Další informace naleznete v tématu #Import atributy (C++).

Jednotlivé KONCE C++

Viz také

Referenční dokumentace

Direktivy preprocesoru

Kompilátor podporu modelu COM