OLE denetimi kayıt hatasının olası nedenleri

Ö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:140346
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Özet
OLE denetimleri Visual C++ denetim Development Kit'e (CDK ile), sağlanan sınaması kapsayıcısı Araçlar menüsünden'dan veya Visual C++ ile sağlanan uygulamaları regsvr veya regsvr32 kullanarak kaydedilebilir. Bazı durumlarda, bir denetimin kaydı başarısız olabilir; bu makalede, sorun giderme amacıyla kullanın.
Daha fazla bilgi
Tüm bir OLE denetimi kayıt yukarıda açıklanan yöntemleri temelde aynı tekniği kullanın. LoadLibrary() denetimi belleğe yüklemek için denir, GetProcAddress() DllRegisterServer() işlevinin adresini almak için çağrılır ve daha sonra denetimi kaydetmek için DllRegisterServer() çağrılır.

Nedenler neden bir denetimin kaydı başarısız olabilir

  • Bir veya daha fazla gerekli OLE DLL'lerin yolu değil. Dll sevk etmek gerekli bir açıklama yanı sıra OLE denetimleri dağıtmaya yönelik yönergeler Shipctrl.wri bulunabilir CDK aynı dizinde bulunan bir dosya.
  • Denetim bir OLE DLL dışındaki bir DLL yükleniyor ve bu DLL yolu değil. Denetimin belleğe yüklenir, örtülü olarak bir alma kitaplığı aracılığıyla yüklenen tüm dll dosyaları da yüklenir. Birini bu DLL yolu yoksa, denetimi; bu nedenle, kaydı başarısız başarıyla yüklenmedi.
  • Bir veya daha fazla DLL sürümü yanlış olabilir. Denetimi, bir DLL dosyasının yüklü olandan daha yeni bir sürümü ile oluşturuldu, denetimin kaydı başarısız şekilde düzgün yüklenmeyebilir.
  • Eski bir sürümü Ocd25.lib bağlantılı. MFC veritabanı sınıfları denetimi kullanıyorsanız, Ocd25.lib dosyasının bağlı bir sorun olabilir.
  • OLE denetimi Novell sunucunun uzak sürücüde bulunur. Bu durumda, erişim haklarını .ocx dosyası denetimi yüklenmesini engelliyor olabilir. Erişim hakları .ocx dosyası için yürütülebilir dosyaları normal ayarı salt okunur, paylaştırılabilir erişimi ayarladığınızdan emin olun.

Teknikleri sorun giderme

Olası nedenler hiçbiri sizin durumda doğru değilse, aşağıdaki teknikleri deneyin.

  1. Denetim projeyle, Visual C++ ile yüklenen yürütülebilir dosyayı OLE denetimi test kapsayıcısının (Tstcon16.exe veya Tstcon32.exe) hata ayıklama oturumu için ayarlayın. (Altında) hata ayıklayıcısını sınaması kapsayıcısı'ı başlattığınızda, sınaması kapsayıcısı hata ayıklama bilgilerini içeren bir uyarı alırsınız. Bu yoksay ve devam edin.
  2. Sınama kapsayıcıdan denetimi kaydetme girişiminde bulundu. Hata ayıklama çıkışı, bağımlı DLL'lerin birini ya da bir OLE denetim DLL'I izleyin. DBWIN çalıştırmak, 16-bit ürünü çalıştırıyorsanız, anımsamak hata ayıklama çıktısını almak için kullanılan program.

    Hata ayıklama oturumu yürütülebilir bir DLL için ayarlama konusunda bilgi için lütfen Books Online'da "DLL hata ayıklama" Yardım konusuna bakın.
Alternatif olarak, Denetim program aracılığıyla kaydetmeye çalışabilir. Önce iletişim tabanlı uygulama ve OLE Otomasyonu MFC AppWizard uygulama oluşturma. OLE Otomasyonu etkinleştirme OLE denetimi kayıt kodu düzgün çalışması başlatılamıyor. CWinApp türetilmiş sınıf, ilk kod InitInstance() işleviyle aşağıdaki gibi bulabilirsiniz:
BOOL CTestregApp::InitInstance(){   // Initialize OLE libraries   if (!AfxOleInit())   {      AfxMessageBox(IDP_OLE_INIT_FAILED);      return FALSE;   }				
LoadLibrary(), GetProcAddress() ve DllRegisterServer döndürülen kodları'nı denetlemek sağlayacak aşağıdaki kod kesimi bu nokta, ekleyin.
#ifdef _WIN32    HINSTANCE hDLL = LoadLibrary("some.ocx");    if(NULL == hDLL)    {        // See Winerror.h for explaination of error code.        DWORD error = GetLastError();        TRACE1("LoadLibrary() Failed with: %i\n", error);        return FALSE;    }    typedef HRESULT (CALLBACK *HCRET)(void);    HCRET lpfnDllRegisterServer;    lpfnDllRegisterServer =            (HCRET)GetProcAddress(hDLL, "DllRegisterServer");    if(NULL == lpfnDllRegisterServer)    {        // See Winerror.h for explaination of error code.        DWORD error = GetLastError();        TRACE1("GetProcAddress() Failed with %i\n", error);        return FALSE;    }    if(FAILED((*lpfnDllRegisterServer)()))    {        TRACE("DLLRegisterServer() Failed");        return FALSE;    }#else // 16-bit    HINSTANCE hDLL = LoadLibrary("regtest.ocx");    if(HINSTANCE_ERROR > hDLL)    {        // See LoadLibrary() help for explaination of error code.        TRACE1("LoadLibrary() Failed with: %i\n", hDLL);        return FALSE;    }    typedef HRESULT (CALLBACK *HCRET)(void);    HCRET lpfnDllRegisterServer;    lpfnDllRegisterServer =            (HCRET)GetProcAddress(hDLL, "DllRegisterServer");    if(NULL == lpfnDllRegisterServer)    {        // See GetProcAddress() help for explaination of error code.        TRACE("GetProcAddress() Failed");        return FALSE;    }    if(FAILED((*lpfnDllRegisterServer)()))    {        TRACE("DLLRegisterServer() Failed");        return FALSE;    }#endif				
kbinf 1.51 1.52 1.52b 2.00 2.10 2, 20 2,50 2.51 2.52 3 3.10 3.20 4.00

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 140346 - Son İnceleme: 12/04/2015 12:29:32 - Düzeltme: 2.0

Microsoft Visual C++ 1.5 Professional Edition, Microsoft Visual C++ 1.51, Microsoft Visual C++ 1.52 Professional Edition, Microsoft Visual C++ 2.0 Professional Edition, Microsoft Visual C++ 2.1, Microsoft Visual C++ 2.2, Microsoft Visual C++ 4.0 Standard Edition

  • kbnosurvey kbarchive kbmt kbcode kbctrl KB140346 KbMttr
Geri bildirim