MIDL ändert die Groß-/Kleinschreibung Bezeichner in der generierten Typ Bibliothek

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 220137
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Problembeschreibung
Wenn es zwei Bezeichner, die sich nur durch Groß-/Kleinschreibung unterscheiden sind, ist der Fall der zweite Bezeichner geändert, um bei der ersten widerzuspiegeln.
Ursache
IDL- und -eingeben-Bibliothek wird die Groß-/ Kleinschreibung nicht beabsichtigt beachtet. Der OLE-Automatisierung Code, der von MIDL zum Generieren der Bibliothek Typ aufgerufen wird dauert das erste Auftreten eines Namens und alle nachfolgenden Vorkommen desselben Namens in der IDL auch wenn es in anderen Kontext identisch ist.
Lösung
Im folgenden werden Problemumgehungen, die Sie verwenden können, um dieses Problem zu vermeiden:
  • Im Fall von einer IDL-Datei in ein anderes importieren, ist die Möglichkeit diese geschieht höher. Anstelle von IDL-Dateien in einem anderen IDL importieren, importieren Sie einen entsprechenden Typ Bibliothek.
  • Stellen Sie sicher, dass der gleiche Namen nicht bereits in der IDL-Datei vorhanden beim Einführen eines neuen Bezeichner ist.
  • Ordnen Sie den Bezeichner in der Bibliothek Typ in der Dokumentation Komponenten generiert. Dies ist eigentlich nicht zu schwierig, da alle Bezeichner, die sich nur durch Groß-/Kleinschreibung unterscheiden werden in einem anderen Kontext, der ist, eine Methode und einen Parameter, Struktur und So weiter. Dies hilft um Abweichung in der Dokumentation der Komponente zu vermeiden.
Status
Es handelt sich hierbei um ein beabsichtigtes Verhalten.
Weitere Informationen
Wenn eine IDL-Datei zwei verschiedene hat Bezeichner mit dem gleichen Namen aber unterscheiden sich nur in der Fall, dann die MIDL-generierten Typbibliothek wird den zweiten Bezeichner in der gleichen Fall wie die erste geändert.

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie eine IDL-Datei (name.idl). Finden Sie im folgenden Beispiel:
    // 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. Verwenden Sie MIDL-Compiler, um Typbibliothek zu generieren. Verwenden Sie den Befehl MIDL-name.idl
  3. Öffnen Sie den generierten Typ Bibliothek in OLEVIEW. Im folgenden finden Sie OLEVIEW-Ausgabe.
    // 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. Hier wurde der Methodenname MyName in Interface2 zu meinname geändert.
MIDL TypeLib-oleprog

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 220137 – Letzte Überarbeitung: 12/05/2015 13:07:12 – Revision: 2.3

Microsoft Platform Software Development Kit January 2000 Edition

  • kbnosurvey kbarchive kbmt kbbug kbpending KB220137 KbMtde
Feedback