windows - क्या एक विंडोज़/एमएसवीसी-प्रैथ लिंकर ध्वज के बराबर है?




dll shared (2)

अफसोस की बात है कि आरपीएटीएच के लिए कोई प्रत्यक्ष एनालॉग नहीं है। कई वैकल्पिक संभावनाएं हैं, उनमें से प्रत्येक आपके लिए अपने विशेष तरीके से अवांछनीय है।

यह देखते हुए कि रनटाइम लाइब्रेरी संघर्ष से बचने के लिए आपको प्रत्येक बिल्ड स्वाद के लिए एक अलग एक्सई की आवश्यकता है, क्योंकि आप अनुमान लगा सकते हैं कि प्रत्येक एक्सई को डीएलएल के प्रत्येक सेट के समान फ़ोल्डर में रखना है।

जैसा कि आपने यह भी उल्लेख किया है, सबसे सार्वभौमिक विधि exe बूटस्ट्रैप करने के लिए बैच फ़ाइल का उपयोग कर PATH चर को बदलने के लिए है।

वांछित DLL फ़ोल्डर में प्रोग्राम चलाने से पहले आप वर्तमान कार्यशील निर्देशिका को बदल सकते हैं।

आप अपने exe के अंदर फ़ंक्शन SetDllDirectory या AddDllDirectory उपयोग कर सकते हैं। यह शायद आरपीएटीएच के सबसे नज़दीक है, लेकिन केवल WinXP SP1 या बाद में काम करता है।

यदि आप प्रत्येक exe स्वाद के फ़ाइल नाम को बदलने के इच्छुक हैं, तो आप "ऐप पथ" रजिस्ट्री कुंजी का उपयोग कर सकते हैं। प्रत्येक exe एक अद्वितीय फ़ाइल नाम की आवश्यकता होगी।

लिनक्स / जीसीसी पर मैं पर्यावरण चर के साथ tempering बिना साझा पुस्तकालयों के लिए निष्पादन योग्य खोज पथ बदलने के लिए -rpath ध्वज का उपयोग कर सकते हैं।

क्या यह विंडोज़ पर भी पूरा किया जा सकता है? जहां तक ​​मुझे पता है, डीएल हमेशा निष्पादन योग्य निर्देशिका में और पाथ में खोजे जाते हैं।

मेरा परिदृश्य: मैं अनन्य नामों की देखभाल किए बिना साझा पुस्तकालयों को उनके गुणों (32/64 बिट / डीबग / रिलीज) के अनुसार स्थानों में रखना चाहता हूं। लिनक्स पर, यह आसानी से आरपीएथ के माध्यम से किया जा सकता है, लेकिन मुझे अभी तक विंडोज़ पर ऐसा करने का कोई तरीका नहीं मिला है।

किसी भी संकेत के लिए धन्यवाद!


"पृथक अनुप्रयोग" एक एक्सएमएल मैनिफेस्ट एम्बेड करने के लिए एक तंत्र है जो डीएलएल निर्भरताओं का वर्णन करता है।







rpath