Aracılığıyla paylaş


alma yönergesi (C++)

C++ özel

Tür kitaplığı bilgileri birleştirmek için kullanılır.Tür kitaplığının içeriğini çoğunlukla com arabirimleri açıklayan C++ sınıflarını dönüştürülür.

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

Parametreler

  • filename
    Almak için tür kitaplığı belirtir.filenameaşağıdakilerden biri olabilir:

    • Llikle, .tlb veya .dll dosyası gibi bir tür kitaplığı içeren dosyanın adı.Anahtar sözcük Dosya:, her dosya adının önüne.

    • ProgID tür kitaplığında bir denetim.Anahtar sözcük ProgID:, her ProgID koyun.Örne?in:

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

      ProgID'lerin hakkında daha fazla bilgi için bkz: yerelleştirme kimliği ve sürüm numarası belirterek.

      64-Bit işletim sisteminde çapraz bir derleyici ile derlerken, derleyici yalnızca 32-bit kayıt defteri kovanını okuyabilir olduğunu unutmayın.Oluşturmak ve bir 64-bit tür kitaplığı kaydı için yerel 64 bit derleyici kullanmak isteyebilirsiniz.

    • Tür kitaplığının kitaplık kimliği.Anahtar sözcük Kitaplık Kimliği:, her kitaplık kimliği koyunÖrne?in:

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

      Sürüm veya LCID, belirtmezseniz, kuralları için uygulanan ProgID: için uygulanan Kitaplık Kimliği:.

    • Bir yürütülebilir (.exe) dosyası.

    • (.Ocx gibi) bir tür kitaplık kaynağını içeren kitaplığı (.dll) dosyası.

    • Tür kitaplığı tutan bileşik belge.

    • Tarafından anlaşılan herhangi bir dosya biçimi LoadTypeLib API.

  • attributes
    Bir veya daha fazla #import öznitelikleri.Ayrı özniteliklere sahip bir boşluk veya virgül.Örne?in:

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

    -veya-

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

Notlar

Dosya adı için arama sırası

Dosya adı dizin belirtimi tarafından isteğe bağlı olarak gelir.Dosya adı varolan bir dosya adı olmalıdır.İki sözdizimi biçimi arasındaki fark, yolu tam olarak belirtildiğinde hangi tür kitaplık dosyaları için Önişlemci arar sıradır.

Syntax formu

Eylem

Teklif formu

İlk olarak dizin içeren dosyanın türü kitaplığı dosyaları aramak için Önişlemci söyler #import deyimi ve sonra da dahil ne olursa olsun dosya dizinleri (#include) bu dosya.Önişlemci sonra aşağıda gösterilen yol boyunca arar.

Açılı ayraç formu

Aşağıdaki yolları boyunca türü kitaplığı dosyaları aramak için Önişlemci bildirir:

  1. Yol ortam değişkeni path listesi

  2. LIB ortam değişkeni path listesi

  3. /I tarafından belirtilen (ek dizinler dahil) dışında başka bir tür kitaplığı ile başvurulan bir tür kitaplığı için derleyici arama derleyici seçeneği no_registry özniteliği.

Yerelleştirme kimliği ve sürüm numarası belirtme

Bir ProgID belirttiğinizde, ProgID, yerelleştirme kimliği ve sürüm numarası belirtebilirsiniz.Örne?in:

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

Yerelleştirme kimliği belirtmezseniz, bir ProgID aşağıdaki kurallara göre seçilir:

  • Yalnızca bir yerelleştirme kodu biri kullanılır.

  • Birden fazla yerelleştirme kimliği ise birinci sürüm numarası 0, 9 veya 409 kullanılır.

  • Birden fazla yerelleştirme kimliği ve bunların hiçbiri 0, 9 veya 409 değil, en son kullanılır.

  • Sürüm numarası belirtmezseniz, en son sürümü kullanılır.

Alma tarafından oluşturulan üstbilgi dosyaları

#importC++ kaynak kodu türü kitaplığı içeriği yeniden yapılandırma iki üstbilgi dosyaları oluşturur.Birincil üstbilgi dosyası Microsoft arabirim tanımı dili (MIDL) derleyici ancak ek derleyicinin ürettiði kod ve veri ile üretilen benzer.Birincil üstbilgi dosyası aynı adı tür kitaplýðý kaldýrýlmakta olan artı bir.tlh uzantısı.İkincil Başlık dosyası ile temel tür kitaplığının adıyla aynı olan bir.TLI uzantısı.Derleyicinin ürettiði üye işlevleri için uygulamaları içerir ve yer alır (#include) birincil üstbilgi dosyasında.

#İmport byref parametreleri kullanan bir görüntüleme arabirimi özelliği alma işlemi yapıyorsanız, __declspec oluşturmayacağını (özelliği) işlev deyimi.

Her iki üstbilgi dosyaları /Fo (adı nesne dosyası) seçeneğiyle belirtilen çıktı dizinine konur.Bunlar daha sonra okumak ve birincil üstbilgi dosyası olarak adlandırılan gibi derleyici tarafından derlenmiş bir #include yönergesi.

Aşağıdaki derleyici en iyi duruma getirme ile gelen #import yönergesi:

  • Üstbilgi dosyası oluşturduğunuzda, tür kitaplığı olarak aynı zaman damgası verilir.

  • Zaman #import olan işlenen, derleyici ilk başlığı var ve güncel olduğunu denetler.Evet ise, daha sonra onu yeniden oluşturulması gerekmez.

#import Yönergesi de en az rebuild katılan ve önceden derlenmiş üstbilgi dosyasında yerleştirilebilir.Bkz: Derlemesi üstbilgi dosyaları oluşturma daha fazla bilgi için.

8etzzkb6.collapse_all(tr-tr,VS.110).gifBirincil tür kitaplığı üstbilgi dosyası

Birincil tür kitaplığı üstbilgi dosyası yedi bölümden oluşur:

  • Demirbaş Başlık:, komutlardan oluşan #include comdef ifadesi.H (hangi kullanılan bazı standart makrolar başlığı tanımlar) ve diğer çeşitli kurulum bilgileri.

  • Başvurular ve TypeDef ilet: yapısı ile ilgili bildirimler gibi oluşan struct IMyInterface ve TypeDef.

  • Akıllı işaretçi bildirimleri: şablon sınıfı _com_ptr_t arabirimi işaretçisi kapsüller ve arama gereğini ortadan kaldıran bir akıllı işaretçi uygulaması olan AddRef, yayın, QueryInterface işlevleri.Buna ek olarak, gizler CoCreateInstance yeni bir com nesnesi oluşturulurken arayın.Bu bölümde makro deyimini kullanır _com_smartptr_typedef TypeDef, şablon specializations için com arabirimleri oluşturmak için _com_ptr_t şablon sınıfı.Örneğin, arabirim IMyInterface,.tlh dosyası içerir:

    _COM_SMARTPTR_TYPEDEF(IMyInterface, __uuidof(IMyInterface));
    

    hangi derleyici genişletilir:

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

    Tür IMyInterfacePtr ham arabirim işaretçisi yerine kullanılabilecek IMyInterface*.Sonuç olarak, çeşitli çağırmak için gerek yoktur IUnknown üye işlevleri

  • TypeInfo bildirimleri: sınıf tanımları ve diğer öğeleri tarafından döndürülen tek tek TypeInfo maddelerin çıkarılması öncelikle oluşan ITypeLib:GetTypeInfo.Bu bölümde, bağımlı form üstbilgisinde her TypeInfo tür kitaplığından yansıtılan TYPEKIND bilgi.

  • İsteğe bağlı eski stil GUID tanım: adlandırılmış GUID sabitlerin başlatmaları içerir.Bu form adlarıdır CLSID_CoClass ve IID_Interface, MIDL derleyici tarafından üretilen benzer.

  • #includeİkincil tür kitaplığı başlığı için deyimi.

  • Altbilgi demirbaş: şu anda içeren #pragma pack(pop).

Başlık demirbaş ve altbilgi demirbaş bölümünde haricinde tüm bölümler bir ad alanında belirtilen adıyla içine kitaplığı deyimi özgün IDL dosyasındaki.Ad alanı adı ile açık bir nitelik olarak ya da aşağıdaki ifadeyi de dahil olmak üzere, tür kitaplığı üstbilgi adlarından kullanabilirsiniz:

using namespace MyLib;

hemen sonra #import kaynak kodunda ifadesi.

Ad alanı kullanılarak bastırılması no_namespace özniteliği #import yönergesi.Ancak, ad alanını engelleniyor ad çakışması neden olabilir.Ad alanı olarak da adlandırılabilir rename_namespace özniteliği.

Derleyici şu anda işliyor tür kitaplığı tarafından gerekli herhangi bir tür kitaplığı bağımlılığı tam yolunu sağlar.Yol, Yorumlar, formun türü kitaplığı üstbilgisine yazılır (.tlh) derleyici her işlenen tür kitaplığı oluşturur.

Tür Kitaplığı başka tür kitaplıklarda tanımlanan türleri için başvurular içeriyorsa, sonra.tlh dosyası aşağıdaki sıralama yorumları içerir:

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

Gerçek dosya adını #import açıklamadır kayıt defterinde saklanan gibi Çapraz başvurulu tür kitaplığı tam yolu.Tür tanımları eksik yüzünden olan hatalarla karşılaşırsanız, başındaki yorumları da denetleyin.Hangi bağımlı tür kitaplıkları Bkz: tlh önce alınması gerekebilir.Olası hatalardır (decl belirticileri eksik) sözdizimi hataları (örneğin, C2143, C2146, C2321), C2501 veya C2433 ('veri bildiriminde izin verilmeyen satıriçi') derleme sırasında.TLI dosyası.

Hangi bağımlılık açıklamalar aksi için sistem üstbilgileri tarafından sağlanmayan ve sonra da belirlemeniz gerekir bir #import önce belirli bir noktada yönergesi #import hataları gidermek için bağımlı tür kitaplığı yönergesi.

Daha fazla bilgi için bkz: Bilgi Bankası makalesi "#import sarıcı yöntemleri neden erişim ihlali" (Q242527) veya "kullandığınızda derleyici hataları xml ile #import" (Q269194).msdn Library media veya adresindeki Knowledge Base makaleleri bulabilirsiniz https://support.microsoft.com/support/ adresine.

#import öznitelikleri

#importİsteğe bağlı olarak bir veya daha fazla öznitelik içerebilir.Bu öznitelikler, derleyici tür kitaplığı üstbilgi içeriğini değiştirmek için söyleyin.Ters eğik çizgi (\) simgesi, tek bir ek satırları dahil etmek için kullanılabilir #import ifadesi.Örne?in:

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

Daha fazla bilgi için bkz. alma öznitelikleri (C++).

Son C++ özel

Ayrıca bkz.

Başvuru

Önişlemci yönergeleri

Derleyici com Destek