vb6 वीबी 6-किसी भी संदर्भ को तोड़ने के बिना भारी निर्भरता वाले केवल कुछ डीएलएल जारी करते हैं



dll binary-compatibility (1)

मुझे चयनित डीएलएल में कुछ बदलाव जारी करना पड़ता है (साधारण तरीके से आंतरिक तरीके से बदलता है - इस के अनुसार संगतता को तोड़ने वाला कोई भी नहीं)

इसलिए आम तौर पर स्वीकृत विधि पुराने डीएलएल को एक अलग साझा डायरेक्टरी में बनाए रखने और नए डीएलएल बनाते समय उन्हें बायनरी संगतता सेट के साथ डीएलएल के पुराने सेट में संकलित करते हैं। जब मैं अपना नया डीएलएल पंजीकृत करता हूँ तो यह GUID को परिवर्तित नहीं करने के लिए किया जाता है इन GUIDs को अन्य डीएलएल में संदर्भ के रूप में उपयोग किया जाता है, जिन्हें मैंने रिलीज के दौरान परेशान नहीं किया है।

अब, जब मैं किसी भी नए DLL को बनाने की कोशिश करता हूं, तो मुझे एक चेतावनी मिलती है: "बायनरी अनुकूलता डीएलएल या एक्सई में एक पैरामीटर प्रकार या वापसी प्रकार होता है जिसका परिभाषा नहीं मिलती"। मुझे पूरा यकीन है कि मैंने बाइनरी संगतता नियम को तोड़ने के लिए कुछ भी नहीं जोड़ा है (हस्ताक्षर, सार्वजनिक विधियों, वेरिएबल्स आदि में कोई परिवर्तन नहीं)। क्या मैं कुछ बुनियादी जांच नहीं कर रहा हूँ?

सुबह से मेरे सिर को खिसकाते हुए किसी भी प्रकार की मदद की बेहद सराहना की जाती है।

संपादित करें: अगर मेरे हस्ताक्षर में कुछ बदलाव आए हैं, तो क्या ऐसा कोई तरीका है जो मुझे कोड की तुलना किए बिना पता चल सकता है?


अपने पुराने डीएलएल ले लो और उन्हें एक compat_ prefix जोड़ें।

बुनियादी तौर पर अपने MyAppDataAccess.dll फ़ाइल का नाम बदलें compat_MyAppDataAccess.dll

अब अपने ActiveX DLL के गुणों पर जाएं और अपनी compat_MyAppDataAccess.dll को बाइनरी संगतता को नए compat_MyAppDataAccess.dll के साथ सेट करें, जैसे नीचे।

अब सिर्फ अपने डीएलएल का निर्माण और इसकी तैनाती करें।

यह काम करना चाहिए। यदि, वास्तव में आप अपने परिवर्तनों के परिणामस्वरूप बाइनरी संगतता को तोड़ा जाएगा, तो आपको यह चेतावनी मिलेगी कि