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

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
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
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.0235import "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.
MIDL TypeLib oleprog

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 220137 - Poslední kontrola: 12/05/2015 13:07:12 - Revize: 2.3

Microsoft Platform Software Development Kit-January 2000 Edition

  • kbnosurvey kbarchive kbmt kbbug kbpending KB220137 KbMtcs
Váš názor