Změní případ identifikátor knihovny typů generované MIDL

Překlady článku Překlady článku
ID článku: 220137 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Pokud jsou dva identifikátory liší pouze případu, případ druhé identifikátor změněn na odrážet případ první.

Příčina

Knihovnu typu IDL a nejsou rozlišována záměrné. Automatizace OLE kód, který se nazývá MIDL generovat knihovny typů trvá první výskyt názvu a všechny následné výskyty stejného názvu v IDL, i když je v jiném kontextu být stejné.

Řešení

Můžete se vyhnout tomuto problému zástupná řešení jsou následující:
  • V případě importu jeden soubor IDL do jiného pravděpodobnost této situaci je vyšší. Namísto importu IDL soubory do jiného IDL importovat odpovídající knihovnu typů.
  • Ujistěte se, že stejný název není již k dispozici v souboru IDL při Představení nový identifikátor.
  • Mapovat identifikátor generovaný v knihovně typů s dokumentací součásti. Toto není skutečně příliš obtížné od identifikátory, které se liší podle případu budou v jiném kontextu, který je, jednu metodu a jiný parametr, strukturu a tak dále. Pomůže předejít nesrovnalosti v dokumentaci součást.

Prohlášení

Toto chování je záměrné.

Další informace

Pokud soubor IDL má dvě různé identifikátory se stejným názvem, ale liší se pouze v případě, pak MIDL generovaný knihovnou typů se změní identifikátor druhé stejnými písmeny jako první.

Kroky pro reprodukci chování

  1. Vytvořit soubor IDL (name.idl). Viz následující příklad:
    // 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. Pomocí MIDL kompilátor generovat knihovny typů. Použití příkazu MIDL name.idl
  3. Otevřete knihovnu generované typ v OLEVIEW. Viz následující výstup OLEVIEW.
    // 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. Název metody MyName v Interface2 zde byla změněna na název.

Vlastnosti

ID článku: 220137 - Poslední aktualizace: 29. září 2006 - Revize: 2.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Platform Software Development Kit-January 2000 Edition na těchto platformách
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 4.0 Developer Edition
Klíčová slova: 
kbmt kbbug kbpending KB220137 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:220137

Dejte nám zpětnou vazbu

 

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