delphi - सिस्टम पथ के बाहर एक dll का उपयोग कैसे करें




openssl indy (2)

मैंने एक आवेदन किया जो openssl dlls ( libeay32.dll और ssleay32.dll ) का उपयोग करता है। यह उन का उपयोग करने के लिए इंडी है, मैं सीधे डीएलएल को कॉल नहीं करता

सबसे आसान समाधान मैं एक इंस्टॉलर से बचने पाया (मैं सिर्फ एक exe delpoy और मैं इस दृष्टिकोण के साथ ठीक हूँ) है:

  1. डीएलएस को एक्सई के संसाधन के रूप में डाल दिया
  2. प्रोग्राम शुरू करने पर मैं उन्हें exe फ़ोल्डर में निकालने के लिए
  3. exe उन का उपयोग करता है

यह एकदम सही है, लेकिन मैं एक अस्थायी फ़ोल्डर में डीएलएस को निकालने के दृष्टिकोण को बेहतर करना चाहूंगा, न कि exe फ़ोल्डर पर (जो कई मामलों में डेस्कटॉप है)।

समस्या यह है कि मुझे पता नहीं है कि अनुप्रयोग को डीएमएल का इस्तेमाल करने के लिए अस्थायी फ़ोल्डर में कैसे बल देना है, क्योंकि अब यह व्यवहार है: अगर डीएलएस मौजूदा निर्देशिका में नहीं हैं तो सिस्टम पथ में परिभाषित निर्देशिकाओं में खोज करने का प्रयास करें।

कौन मेरे समाधान दर में डीएलएस का उपयोग करने के लिए मजबूर करने के लिए एक समाधान को जानता है? (जैसे "अस्थायी तौर पर डीएलएस दर्ज करना")


अगर आप इंडी 10 के अप-टू-डेट संस्करण का उपयोग कर रहे हैं, तो IdSSLOpenSSLHeaders यूनिट के पास एक सार्वजनिक IdOpenSSLSetLibPath() फ़ंक्शन है जो कि IdOpenSSLSetLibPath() लिए कस्टम फ़ोल्डर को देखने के लिए इंडी को बताता है:

procedure IdOpenSSLSetLibPath(const APath: String);

आप DLL खोज क्रम में हेरफेर करने के लिए SetDllDirectory का उपयोग कर सकते हैं।







indy10