2011-06-25 15 views
5

में कोई भी प्रविष्टि नहीं बनाता है मुझे DLL पंजीकृत करने का प्रयास करने में कोई समस्या है। मेरा ओएस विंडोज 7 (x64) है।regsvr32 रजिस्ट्री

मैं दो अलग अलग तरीकों से यह कार्य करें:

1) का उपयोग करते हुए regsvr32। मुझे संदेश मिलता है "DllRegisterServer ... सफल", फिर भी मुझे रजिस्ट्री में मेरा सीएलएसआईडी नहीं मिल रहा है। (और मुझे इस सीएलएसआईडी के साथ घटक का इंस्टेंस बनाने की कोशिश करने में "कक्षा पंजीकृत नहीं है" त्रुटि मिलती है)। इस मामले में, मुझे पता है कि DllRegisterServer कभी नहीं कहा जाता है (क्योंकि मैं इस फ़ंक्शन की शुरुआत में एक टेक्स्ट फ़ाइल बना रहा हूं और यह नहीं है बनाया था)।

2) स्पष्ट रूप से मेरे डीएलएल लोड करें और DllRegisterServer को कॉल करें। इस मामले में, DllRegisterServer S_OK देता है, लेकिन फिर भी मुझे रजिस्ट्री में अपना CLSID नहीं मिल रहा है और "कक्षा पंजीकृत नहीं है" त्रुटि प्राप्त करें।

मुझे यकीन है कि कोड सही है (क्योंकि यह केवल मेरे ओएस पर काम नहीं करता है), ऐसा लगता है कि समस्या ओएस में है। क्या किसी को ऐसी समस्या का सामना करना पड़ा?

उत्तर

1

http://msdn.microsoft.com/en-us/library/aa384232(v=vs.85).aspx यह

व्याख्या करनी चाहिए पर कि क्या आपके dll 32bit या 64bit रजिस्ट्री कुंजियों को अलग-अलग स्थानों

+0

मेरे DLL 32 बिट और मैं है HKEY_CLASSES_ROOT \ CLSID में रजिस्ट्री कुंजी बनाने की अपेक्षा करें। हालांकि, मैंने इसके लिए पूरी रजिस्ट्री की खोज की और यह वहां नहीं है। – skvadrik

+2

क्या आपने मेरे द्वारा पोस्ट किए गए लिंक को पढ़ा था? HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID कुंजी –

+0

आज़माएं भी आपका कॉलिंग ऐप 32 बिट भी है। 32 बिट देशी एप्लिकेशन केवल 32 बिट डीएलएस लोड कर सकता है और 64 बिट –

0

बस एक समान समस्या हल पर बनाए जाते हैं है निर्भर करता है। मैंने मैन्युअल रूप से मौजूदा 32-बिट COM नए इंटरफ़ेस, कार्यान्वयन (MyNewClass) और rgs फ़ाइल में जोड़ा है। लेकिन जब मैंने सफलतापूर्वक SysWow64 \ regsvr32.exe का उपयोग करके अपना COM पंजीकृत कर लिया है, मैंने देखा है कि मेरा प्रोगिड/सीएलएसआईडी HKCR \ CLSID या HKCR \ Wow6432Node \ CLSID

के तहत दिखाई नहीं दे रहा था, तो वास्तव में, मुझे कुछ चीज़ याद आई:

  1. मैं MyApp.cpp में BEGIN_OBJECT_MAP तहत OBJECT_ENTRY जोड़ने के लिए दायर
  2. और जोड़ने DECLARE_REGISTRY_RESOURCEID (IDR_xxx) फ़ाइल MyNewClass.h को

resource.h था

परिभाषित IDR_xxx 105

ExistingCom.rc

IDR_xxx रजिस्ट्री DISCARDABLE "MyNewClass.rgs" व्यवस्थापक के रूप में

0

रन कमांड लाइन टूल और फिर रजिस्टर आदेश regsvr32 चलाने

संबंधित मुद्दे