Hata: Bir yürütülebilir Platform Dependent farklı tür kitaplıkları ba?vurmak oluştur

Makale çevirileri Makale çevirileri
Makale numarası: 281913 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Birden fazla tür kitaplığı bir platformda (örneğin, Microsoft Windows 2000 tabanlı bir bilgisayarda) başvuran bir Visual Basic projesi derleme sonra oluşturulan ikili diğer platformlar (örneğin, Microsoft Windows NT 4--Microsoft Windows 95, Microsoft Windows 98- ve Microsoft Windows ME tabanlı bilgisayarlar) çalıştırmak başarısız olur ve bir erişim ihlali (AV) alır.

Neden

Girişler için tür kitaplığı, dll adı okunurken Visual Basic Derleyicisi büyük/küçük harf duyarlıdır. Sonuç olarak, iki veya daha fazla tür kitaplıkları bir projeye başvuruyor ve aynı DLL için <a2>DLLAdı</a2> girişi, farklı durumlarda dllname("kernel32.dll") kitaplığında, A ve B kitaplığındaki dllname("KERNEL32.DLL") gibi farklı kitaplıklarda yazıldığından derleyici iki alma bölüm için aynı DLL oluşturur ve ikili platform bağımlı yapar.

Durum

Microsoft, bunun bu makalenin başında listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Daha fazla bilgi

Davranışı yeniden oluşturma adımları

  1. Windows 2000 tabanlı bir bilgisayarda ve Windows NT 4 tabanlı bir bilgisayarda en son hizmet paketlerinin her ikisi de ayarlayabilirsiniz. Ayrıca Visual Basic ve Visual C++ 6.0 Service Pack 5 ile her iki bilgisayarda yükleyin.
  2. Windows 2000 tabanlı bilgisayarda, kopyalama ve yapıştırma aşağıdaki arabirimi Açıklama Dili (IDL) Not Defteri'ne kodu ve lcase.idl kaydedin. Bu, MIDL.EXE, midl lcase.idl derleyin. Sonuçta elde edilen tür kitaplığı lcase.tlb adlı.
    [
      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. Ucase.tlb aşağıdaki IDL kodu olarak 1. adımda, oluşturma:
    [
      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. Bir standart exe DOSYASı Visual Basic projesi oluşturun. Varsayılan olarak, Form1 oluşturulur.
  5. Proje menüsünde References seçmek için tıklatın. Başvurular) iletişim kutusunda, lcase.tlb ve ucase.tlb göz atın, her iki kitaplıkları seçin ve Tamam ' ı tıklatın.
  6. Form1'e aşağıdaki kodu ekleyin:
    Private Sub Form_Load()
        lcasetest.Sleep 1
        ucasetest.Sleep 1
    End Sub
    					
  7. Dosya menüsünden projeyi Kaydet ' i tıklatın ve proje derlemeye Project1.exe yap ' ı seçin.
  8. Project1.exe, yürütülebilir dosyayı çalıştırmak ve formun hatasız göründüğünü unutmayın.
  9. Windows NT 4 tabanlı bilgisayara Project1.exe kopyalayın ve çalıştırın. Erişim ihlali oluştuğunu unutmayın.
  10. Kopyala ve Windows NT 4 tabanlı bir bilgisayarda aynı proje derleyip hem Windows NT 4 ve Windows 2000 tabanlı bilgisayarlarda çalıştırın. Windows 2000 tabanlı bilgisayar üzerinde başarısız olduğunu unutmayın.

Özellikler

Makale numarası: 281913 - Last Review: 24 Şubat 2014 Pazartesi - Gözden geçirme: 3.0
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbbug kbcompiler kbnofix KB281913 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:281913

Geri Bildirim Ver

 

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