प्रौद्योगिकी साझेदारी

global::System.Runtime.InteropServices.DllImport

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

C# प्रोग्रामिंग् इत्यस्मिन् .[global::System.Runtime.InteropServices.DllImport] एकं विशेषता अस्ति यत् अप्रबन्धितसङ्केतस्य (प्रायः C अथवा C++ इत्यनेन लिखितं DLL अथवा पुस्तकालयं) प्रवेशबिन्दुं चिह्नितुं उपयुज्यते येन C# कोडः तत् आह्वयितुं शक्नोति । इदं विशेषता P/Invoke (Platform Invocation Services) तन्त्रस्य भागः अस्ति, यत् C# कोड् अन्येषु प्रोग्रामिंग् भाषासु कोड् इत्यनेन सह अन्तरक्रियां कर्तुं शक्नोति ।

यदा भवान् एतत् विशेषतां पश्यति तदा प्रायः DLL मध्ये एकं फंक्शन् आयातयितुं उपयुज्यते येन तत् C# कोड् मध्ये आह्वयितुं शक्यते । उदाहरणतया:

  1. using System;
  2. using System.Runtime.InteropServices;
  3. class NativeMethods
  4. {
  5. // 导入DLL中的函数
  6. [DllImport("MyNativeLibrary.dll")]
  7. public static extern int MyNativeMethod(int a, int b);
  8. }
  9. class Program
  10. {
  11. static void Main()
  12. {
  13. // 调用DLL中的函数
  14. int result = NativeMethods.MyNativeMethod(1, 2);
  15. Console.WriteLine(result);
  16. }
  17. }

अस्मिन् उदाहरणे .MyNativeMethodएकः इतिMyNativeLibrary.dllfunction defined in , यत् C# कोड् मध्ये आयातितं भवति येन इदं भवितुम् अर्हतिMainविधियाम् आहूतः।

DllImport गुणानाम् अनेकाः पैरामीटर्स् सन्ति, परन्तु सर्वाधिकं सामान्यं पैरामीटर् DLL इत्यस्य नाम (उपरि उदाहरणे इव) अस्ति । अन्येषु पैरामीटर्स् मध्ये कॉलिंग् कन्वेन्शन (CallingConvention), CharSet (स्ट्रिंग् कृते प्रयुक्तः वर्णसमूहः) इत्यादयः सन्ति ।

नोट्: DLL सह P/Invoke इत्यस्य उपयोगं कुर्वन्, भवता सुनिश्चितं कर्तव्यं यत् DLL भवतः अनुप्रयोगेन सह सङ्गतम् अस्ति (अर्थात्, ते समानं रनटाइम् वातावरणं उपयुञ्जते, तथा च DLL भवतः ऑपरेटिंग् सिस्टम् तथा आर्किटेक्चर कृते संकलितः अस्ति)। तदतिरिक्तं, यतः P/Invoke C# इत्यस्य प्रकारस्य सुरक्षाप्रणालीं बाईपासं करोति, अतः अतिरिक्तसावधानी अवश्यं ग्रहीतव्या यत् पारितानि पैरामीटर्स् तथा च प्रत्यागतानि मूल्यानि DLL मध्ये फंक्शन् हस्ताक्षरेण सह सम्यक् मेलनं कुर्वन्ति इति सुनिश्चितं भवति