2012-05-07 14 views
11

एक अजीब त्रुटि पंजीकृत करने में विफल:सुलझाने त्रुटि MSB8011: उत्पादन

error MSB8011: Failed to register output. Please try enabling Per-user Redirection or register the component from a command prompt with elevated permissions. C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 744

मैं जब एक एक्टिव एक्स नियंत्रण में OpenSceneGraph (OSG) का उपयोग करने की कोशिश कर यह त्रुटि हुई। एक Google खोज ने सभी प्रकार के समाधान दिखाए जो वास्तव में समस्या का समाधान नहीं करते थे या त्रुटि के सटीक कारण का पता नहीं लगाते थे, इसलिए मैं समाधान को एक ही स्थान पर रखना चाहता हूं: यहां।

मुझे इसका समाधान मिला, और जल्द ही मैं अपने प्रश्न का उत्तर दूंगा, ताकि अगर वे एक ही समस्या का सामना कर सकें तो लोग अपना समाधान ढूंढ सकते हैं।

उत्तर

20

यह त्रुटि होती है जब विजुअल स्टूडियो (2010) ओसीएक्स बनाने के लिए प्रोग्राम द्वारा आवश्यक निर्भर डीएलएल फाइल नहीं ढूंढ सकता है। ओसीएक्स प्रोजेक्ट की डीबग निर्देशिका (डीबग बिल्ड के लिए) में बनाया गया है, और "वर्किंग डायरेक्टरी" (प्रोजेक्ट सेटिंग्स में) को निर्दिष्ट करने वाले फ़ोल्डर के रूप में निर्दिष्ट डीएलएल के फ़ोल्डर के रूप में, डीएलएल की तलाश में विजुअल स्टूडियो की मदद नहीं करेगा।

अब पकड़ है (यह समस्या को हल करने के लिए सिरदर्द बनाता है) कि कभी-कभी, विजुअल स्टूडियो के बिना ओसीएक्स बनाने में सक्षम होने के कारण, आप ओसीएक्स पर निर्भरता वॉकर चलाने में सक्षम नहीं होंगे। तो आप कभी यह नहीं समझ पाएंगे कि गायब डीएलएल समस्या है।

यदि आप जानते हैं कि डीबग फ़ोल्डर में कौन सी डीएलएल की आवश्यकता है, तो बस उन्हें वहां रखें, और त्रुटि गायब हो जाएगी। यदि आप नहीं जानते हैं, और यदि आपका ओसीएक्स नहीं बनाया गया है, तो प्रोजेक्ट सेटिंग्स> लिंकर> सामान्य> आउटपुट पर जाएं और मान को "नहीं" पर सेट करें। यह आपके लिए आपके ओसीएक्स बनाएगा, लेकिन इसे पंजीकृत करने की प्रक्रिया के माध्यम से नहीं जाएगा, जब इसे निर्भर डीएलएल की आवश्यकता होती है।

एक बार जब आप ओसीएक्स और निर्भरता वॉकर को डबल-क्लिक करते हैं तो आपको पीले सर्कल आइकन के साथ गायब डीएलएल दिखाता है, बस उन डीएलएल को ओसीएक्स के समान फ़ोल्डर में रखें, और आपका प्रोग्राम ठीक काम करेगा। यह इत्ना आसान है।

+0

बहुत उपयोगी। एक निर्मित ओसीएक्स प्राप्त करने और निर्भरता वॉकर का उपयोग करने से मुझे इस मुद्दे की पहचान करने में मदद मिली - यह पता चला कि मेरे पास 64 बिट फाइलें नहीं थीं (विभिन्न CPU प्रकारों वाले मॉड्यूल पाए गए थे)। –

+0

क्या डीएलएस को डीबग निर्देशिका में कॉपी किए बिना ऐसा करने के लिए वैसे भी है? मैं बजाय एक और निर्देशिका निर्दिष्ट करता हूं जिसमें डीएलएल शामिल है, जैसे कि अतिरिक्त लाइब्रेरी निर्देशिका गुण जो यह lib को खोजने के लिए उपयोग करता है। – Steiny

+0

यह एक आम समस्या है। यहां तक ​​कि मैं इसके लिए एक समाधान चाहता था: http://stackoverflow.com/questions/4953843/why-cant-visual-studio-find-my-dll और इन लोगों ने भी ऐसा किया http://stackoverflow.com/questions/2119539/ विजुअल-स्टूडियो-कैसे-टू-सेट-पथ-टू-डीएल और http://stackoverflow.com/questions/428085/how-do-i-set-a-path-in-visual-studio – Nav

1

MSB8011 जब भी regsvr32 किसी समस्या का सामना करता है तब उत्पन्न एक सामान्य त्रुटि प्रतीत होता है। मेरे मामले में, regsvr32 कोड 4 के साथ बाहर निकला जब प्रति उपयोगकर्ता पंजीकरण "हां" पर सेट किया गया था, लेकिन डीएलएल I बिल्डिंग एक DllInstall प्रविष्टि बिंदु को परिभाषित नहीं किया था।

7

समस्या यह हो सकती है कि आपकी परियोजना COM ऑब्जेक्ट को पंजीकृत करने का प्रयास करे, लेकिन ऐसा करने के लिए पर्याप्त विशेषाधिकार नहीं हैं। विंडोज 7 और 8 regsvr32 पर प्रशासनिक अनुमतियों की आवश्यकता है।

आप क्या कर सकते हैं निम्नलिखित है। अपने डेस्कटॉप पर C: \ Windows \ SysWOW64 \ cmd.exe (32-बिट कंसोल) पर शॉर्टकट बनाएं। राइट क्लिक करें, गुण -> उन्नत -> व्यवस्थापक के रूप में चलाएं चेक करें। शॉर्टकट लॉन्च करें, और सुनिश्चित करें कि उपयोगकर्ता एक्सेस कंट्रोल पॉप अप हो गया है, और हां क्लिक करें। इस विशेष कंसोल विंडो से निर्माण शुरू करें।

1

आप प्रोग्राम आईडी शॉर्टकट से इस आईडीई को लॉन्च करके वीएस 2013 आईडीई के माध्यम से भी ऐसा कर सकते हैं, विजुअल स्टूडियो 2010/2013 का चयन करें और फिर राइट क्लिक करें और आईडीई लॉन्च करने के बाद व्यवस्थापक के रूप में चलाएं चुनें, फिर अपनी समाधान फ़ाइल खोलें और इसे बनाएं , आप क्योंकि regsrv32 DLL/COM पंजीकरण

1

Property पृष्ठ पर की ऐसी त्रुटियों

Configuration Properties->Build Events->Post-Build Event

आप एक /Service के रूप में यह जिक्र किया जा सकता है के लिए जाना कभी नहीं मिल जाएगा। नीचे दिखाए गए विकल्पों को संशोधित करने में मदद मिल सकती है।

संशोधन से पहले:

Before modification

संशोधन के बाद:

After modification

यह मैं मदद की, आशा है कि यह आप भी मदद मिलेगी।

0

मैंने "प्रशासक" वीएस 2015 के रूप में चलाने का प्रयास करने की कोशिश की, यह समस्या को हल करने में सक्षम है

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