Chyba: Odkazování na jiný typ knihovny může vykreslit Dependent spustitelný Platform

Překlady článku Překlady článku
ID článku: 281913 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Po vypracování projektu Visual Basic, který odkazuje na více než jednu knihovnu typů v jedné platformy (například počítač systémem Microsoft Windows 2000), výsledný binární soubor se nepodařilo spustit na jiné platformy (například Microsoft Windows NT 4-, Microsoft Windows 95-, Microsoft Windows 98- a počítačů se systémem Microsoft Windows ME) a obdrží aplikace Access porušení (AV).

Příčina

Kompilátor Visual Basic rozlišuje malá a velká písmena při jeho je čtení položky pro Název_souboru_DLL v knihovnách typů. V důsledku toho Pokud dva nebo více knihoven typů odkazuje na projekt a Název_souboru_DLL propuštění zboží do stejné knihovně DLL je zadána v různých případech v různých knihovnách, například v knihovně A dllname("kernel32.dll") a dllname("KERNEL32.DLL") v knihovně B, kompilátor vygeneruje dva oddíly importu pro stejné knihovně DLL a vykreslí binární platformu závislé.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku.

Další informace

Kroky pro reprodukci chování

  1. Nastavit do počítače se systémem Windows 2000 a počítači se systémem Windows NT 4, oba s nejnovější aktualizací service Pack. Také nainstalujte Visual Basic a Visual C++ 6.0 s aktualizací Service Pack 5 do obou počítačů.
  2. V počítači se systémem Windows 2000 kopírování a vkládání následující rozhraní Description Language (IDL) kódu do programu Poznámkový blok a uložit jej jako lcase.idl. Kompilujte jej s MIDL.EXE, midl lcase.idl. Výsledný knihovnu typů s názvem 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. Jako v kroku 1, sestavení ucase.tlb s následujícím kódem IDL:
    [
      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. Vytvoření projektu jazyka Visual Basic Standardní EXE. Ve výchozím nastavení je vytvořena Form1.
  5. V nabídce projekt klepnutím vyberte odkazy. V dialogovém okně odkazy procházením lcase.tlb a ucase.tlb, vyberte obě knihovny a klepněte na tlačítko OK.
  6. Přidejte následující kód Form1:
    Private Sub Form_Load()
        lcasetest.Sleep 1
        ucasetest.Sleep 1
    End Sub
    					
  7. V nabídce soubor klepněte na projekt Uložit a vyberte Vytvořit Project1.exe ke kompilaci projektu.
  8. Spustit spustitelný soubor Project1.exe a Všimněte si, že je formulář zobrazen bez chyb.
  9. Zkopírujte Project1.exe počítači se systémem Windows NT 4 a spusťte jej. Všimněte si, že dojde k narušení přístupu.
  10. Kopírovat a kompilovat stejného projektu počítači se systémem Windows NT 4 a spusťte jej v počítačích obou systému Windows NT 4 a Windows 2000. Všimněte si, že selže v počítači se systémem Windows 2000.

Vlastnosti

ID článku: 281913 - Poslední aktualizace: 28. února 2014 - Revize: 3.0
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbnosurvey kbarchive kbmt kbbug kbcompiler kbnofix KB281913 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:281913

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