Fehler: Verweisen auf andere Typbibliotheken kann eine ausführbare Plattform abhängige Rendern

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 281913 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Nach dem Kompilieren einer Visual Basic-Projekt die more than eine Typ Bibliothek auf einer Plattform (such as ein Microsoft_Windows_2000-based Computer) verweist, die sich ergebende Binärdatei kann nicht auf andere Plattformen (z. B. Microsoft Windows NT 4-, Microsoft Windows 95, Microsoft Windows 98 ? und Windows ME-basierten Computern) ausgeführt und ruft eine Access-Verletzung (AV).

Ursache

Der Visual Basic-Compiler unterscheidet zwischen Groß-und Kleinschreibung beim Lesen von Einträgen für Dllname in Typbibliotheken ist. Als Ergebnis Wenn ein Projekt verweist auf zwei oder mehrere Typbibliotheken und der Dllname Eintrag für die gleiche DLL in anderen Fällen in unterschiedlichen Bibliotheken, z. B. dllname("kernel32.dll") in Bibliothek ein, und dllname("KERNEL32.DLL") in Bibliothek B geschrieben ist der Compiler generiert zwei importieren Abschnitte für die gleiche DLL und rendert die binäre Plattform abhängig.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel Microsoft-Produkten handelt.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Richten Sie eine Windows 2000-basierten Computer und einem Windows NT 4-basierten Computer beide mit der neuesten Service Packs. Installieren Sie auch Visual Basic und Visual C++ 6.0 mit Service Pack 5 auf beiden Computern.
  2. Auf der Windows 2000-basierten Computer kopieren und Einfügen der folgenden Interface Description Language (IDL) code in den Editor und speichern Sie es als lcase.idl . Mit MIDL.EXE, lcase.idl MIFL kompilieren. Der resultierende Typ Bibliothek heißt lcase.tlb .
    [
      uuid(D618AA4D-814A-47a2-9AC1-DDE18EDF1C54),
      version(1.0),
      helpstring("Lower case test")
    ]
    library lcasetest
    {
        [
          dllname("kernel32.dll"),
          version(1.0),
          helpstring("Sleep function exported by kernel32.dll")
        ]
        module lcasetest {
            [
    			entry("Sleep"), 
    			helpstring("sleep - lcase test.")
    		]
            void _stdcall Sleep([in] long dwMS);
        };
    };
    					
  3. Erstellen Sie As in Schritt 1 ucase.tlb mit dem folgenden IDL-Code:
    [
      uuid(3F215C63-D0AD-4980-93F2-5DDF850061E4),
      version(1.0),
      helpstring("Upper case test")
    ]
    library ucasetest
    {
        [
          dllname("KERNEL32.DLL"),
          version(1.0),
          helpstring("Sleep function exported by kernel32.dll")
        ]
        module lcasetest {
            [
    			entry("Sleep"), 
    			helpstring("sleep - ucase test.")
    		]
            void _stdcall Sleep([in] long dwMS);
        };
    };
    					
  4. Erstellen Sie ein Visual Basic Standard EXE-Projekt. Form1 wird standardmäßig erstellt.
  5. Aktivieren Sie im Menü Projekt verweisen . Im Dialogfeld Verweise wechseln Sie zu lcase.tlb und ucase.tlb , wählen Sie beide Bibliotheken und klicken Sie dann auf OK .
  6. Fügen Sie Form1 folgenden Code hinzu:
    Private Sub Form_Load()
        lcasetest.Sleep 1
        ucasetest.Sleep 1
    End Sub
    					
  7. Im Menü Datei klicken Sie auf Speichern das Projekt, und wählen Sie dann Als Projekt1.exe zum Kompilieren des Projekts.
  8. Führen Sie die ausführbare Datei Projekt1.exe, und beachten Sie, dass das Formular ohne Fehler angezeigt wird.
  9. Kopieren Sie Projekt1.exe auf der Windows NT 4-basierten Computer und führen Sie es. Beachten Sie, dass eine Zugriffsverletzung auftritt.
  10. Kopieren Sie und kompilieren Sie das gleiche Projekt auf dem Windows NT 4-basierten Computer und führen Sie es auf dem Windows NT 4 und Windows 2000-basierten Computer. Beachten Sie, dass es auf dem Windows 2000-basierten Computer fehlschlägt.

Eigenschaften

Artikel-ID: 281913 - Geändert am: Sonntag, 23. Februar 2014 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
Keywords: 
kbnosurvey kbarchive kbmt kbbug kbcompiler kbnofix KB281913 KbMtde
Maschinell übersetzter Artikel
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: 281913
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

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