Harf içinde oluşturulan bir tür kitaplığı tanımlayıcısı MIDL değiştirir

Makale çevirileri Makale çevirileri
Makale numarası: 220137 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Küçük/büyük harf farklı iki tanımlayıcı olduğunda, ikinci tanıtıcısı harf ilk harf yansıtacak şekilde değiştirilir.

Neden

IDL ve tür kitaplığının tasarım gereği büyük/küçük harf duyarlı değildir. Aynı olacak şekilde farklı içerikte, olsa bile IDL, OLE Otomasyonu kodu, tür kitaplığı oluşturmak için MIDL tarafından çağrılan ilk geçtiği bir ad ve sonraki tüm oluşumları aynı adı sürüyor.

Çözüm

Bu sorunu gidermek için kullanabileceğiniz geçici çözümler şunlardır:
  • Bir IDL dosyasının başka alınması durumunda, bu oluşmasını olasılığı yüksektir. Başka IDL IDL dosyalarını almak yerine, karşılık gelen bir tür kitaplığı alma.
  • Aynı adla zaten yeni bir kimlik tanıtımı, IDL dosyanın var olduğundan emin olun.
  • Bileşenleri belgeleri ile Tür kitaplığında oluşturulan tanıtıcısı eşleyin. Küçük/büyük harf farklı bir tanıtıcılar, farklı bir içerik, bir yöntem ve başka olacaktır, çünkü bu gerçekten çok zor değildir parametresi, yapısını ve benzeri. Bu bileşenin gözlemlediğiniz önlemek için yardımcı olur.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Iki farklı bir IDL dosyası varsa tanıtıcılar ile aynı adı, ancak yalnızca bu durumda farklı ve tür kitaplığı MIDL oluşturulan ilk aynısına ikinci tanıtıcısı dönüşür.

Davranışı yeniden oluşturma adımları

  1. (Name.idl) bir <a0>IDL dosyası oluşturun. Aşağıdaki örneğe bakın:
    // Test program to demonstrate capitalization bugs in MIDL 5.02.0235
    import "oaidl.idl";
    import "ocidl.idl";
    
       [
          uuid(DB9DDB0D-8834-11D1-8278-00A024A41CC8),
          dual,
          oleautomation,
       ]
       interface Interface1 : IDispatch {
          [ id(4), helpstring("") ]
          HRESULT OtherMethod (
             // This parm name will affect the case of the subsequent method name.
             [in] VARIANT_BOOL mYnAme );
       };
    
    
       [
          uuid(DB9DDB0C-8834-11D1-8278-00A024A41CC8),
          dual,
          oleautomation,
       ]
       interface Interface2 : IDispatch {
          [ id(5), helpstring("") ]
          // The method name gets changed.
          HRESULT MyName ();
       };
    
    
    [  uuid(2A216780-BC52-11D2-B94F-00C04F81B63A), version(1.0),
    ]
    library MIDLTST
    {
       importlib("stdole32.tlb");
    
       [
          uuid(65B5C950-883D-11D1-8278-00A024A41CC8),
          helpstring("Exercise various supported types.")
       ]
       coclass MIDLTest {
          [default] interface Interface1;
          interface Interface2;
       };
    };
    						
  2. MIDL derleyici, tür kitaplığı oluşturmak için kullanın. Komut MIDL name.idl kullanın.
  3. Tür kitaplığı oluşturulan OLEVIEW içinde açın. Aşağıdakilere bakın OLEVIEW çıktı.
    // Generated .IDL file (by the OLE/COM Object Viewer)
    // 
    // typelib filename: <could not determine filename>
    
    [
      uuid(2A216780-BC52-11D2-B94F-00C04F81B63A),
      version(1.0)
    ]
    library MIDLTST
    {
        // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
        importlib("STDOLE2.TLB");
    
        // Forward declare all types defined in this typelib
        interface Interface1;
        interface Interface2;
    
        [
          uuid(65B5C950-883D-11D1-8278-00A024A41CC8),
          helpstring("Exercise various supported types.")
        ]
        coclass MIDLTest {
            [default] interface Interface1;
            interface Interface2;
        };
    
        [
          odl,
          uuid(DB9DDB0D-8834-11D1-8278-00A024A41CC8),
          dual,
          oleautomation
        ]
        interface Interface1 : IDispatch {
            [id(0x00000004)]
            HRESULT OtherMethod([in] VARIANT_BOOL mYnAme);
        };
    
        [
          odl,
          uuid(DB9DDB0C-8834-11D1-8278-00A024A41CC8),
          dual,
          oleautomation
        ]
        interface Interface2 : IDispatch {
            [id(0x00000005)]
            HRESULT mYnAme();
        };
    };
    
    						
  4. Burada MyName Interface2'nda yöntemin adını mYnAme için değiştirildi.

Özellikler

Makale numarası: 220137 - Last Review: 29 Eylül 2006 Cuma - Gözden geçirme: 2.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Platform Software Development Kit - Ocak 2000 Sürümü, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 4.0 Developer Edition
Anahtar Kelimeler: 
kbmt kbbug kbpending KB220137 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:220137

Geri Bildirim Ver

 

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