BUG: Diverse librerie dei tipi di riferimento pu˛ Render un dipendenti dalla piattaforma eseguibile

Traduzione articoli Traduzione articoli
Identificativo articolo: 281913 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Dopo aver compilato un progetto di Visual Basic che fa riferimento a pi¨ di una libreria dei tipi su una piattaforma (ad esempio un computer basato su Microsoft Windows 2000), il file binario risultante non riesce a eseguire su altre piattaforme (ad esempio Microsoft Windows NT 4-, Microsoft Windows 95, Microsoft Windows 98- e i computer basati su Microsoft Windows ME) e ottiene una violazione di accesso (AV).

Cause

Il compilatore di Visual Basic Ŕ con distinzione tra maiuscole e minuscole durante la lettura di voci per dllname in librerie dei tipi. Di conseguenza, se un progetto fa riferimento a due o pi¨ librerie dei tipi e la voce di dllname per la stessa DLL sia stata digitata in diversi casi in librerie diverse, ad esempio dllname("kernel32.dll") nella libreria A e dllname("KERNEL32.DLL") nella libreria B, il compilatore genera due sezioni di importazione per la stessa DLL ed esegue il rendering della piattaforma binaria dipendente.

Status

Microsoft ha confermato che questo un bug nei prodotti Microsoft elencati all'inizio di questo articolo.

Informazioni

Procedura per riprodurre il problema

  1. Consente di impostare un computer basato su Windows 2000 e un computer basato su Windows NT 4, entrambi con i service pack pi¨ recente. Installare anche Visual Basic e Visual c ++ 6.0 con Service Pack 5 in entrambi i computer.
  2. Nel computer basato su Windows 2000, copia e Incolla IDL (Interface Description Language) seguenti codice nel blocco note e salvarlo come lcase.idl . Compilarlo con MIDL.EXE, lcase.idl midl . La libreria dei tipi risultante Ŕ denominata 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. As in passaggio 1, creare ucase.tlb con il codice IDL riportato di seguito:
    [
      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. Creare un progetto EXE standard di Visual Basic. In base all'impostazione predefinita, viene creato il progetto Form1.
  5. Nella finestra di menu progetto , fare clic per selezionare i riferimenti . Nella finestra di dialogo riferimenti selezionare lcase.tlb e ucase.tlb , selezionare entrambe le librerie e quindi fare clic su OK .
  6. Aggiungere il seguente codice per Form1:
    Private Sub Form_Load()
        lcasetest.Sleep 1
        ucasetest.Sleep 1
    End Sub
    					
  7. Dal menu file , fare clic per salvare sul progetto e quindi selezionare Crea Progetto1.exe per compilare il progetto.
  8. Eseguire il file eseguibile Progetto1.exe e prendere nota che verrÓ visualizzato il modulo senza errori.
  9. Copiare nel computer basato su Windows NT 4 Progetto1.exe ed eseguirlo. Si noti che si verifica una violazione di accesso.
  10. Copiare e compilare il progetto stesso nel computer basato su Windows NT 4 e l'esecuzione in entrambi il Windows NT 4 e Windows 2000 computer basati su. Si noti che non riesce nel computer basato su Windows 2000.

ProprietÓ

Identificativo articolo: 281913 - Ultima modifica: lunedý 24 febbraio 2014 - Revisione: 3.0
Le informazioni in questo articolo si applicano a:
  • 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
Chiavi:á
kbnosurvey kbarchive kbmt kbbug kbcompiler kbnofix KB281913 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 281913
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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