.net - What is the proper PInvoke signature for a function that takes var args? -


एक मूल फ़ंक्शन है:

  int sqlite3_config (int, ...);  

मैं PInvoke को इस समारोह में करना चाहता हूं। वर्तमान में, मुझे यह घोषणा है:

  [DllImport ("sqlite3", एंट्रीपॉईंट = "sqlite3_config")) सार्वजनिक स्थिर बाह्य विकल्प कॉन्फ़िगर (कॉन्फ़िगरेशन विकल्प);  

(परिणाम और कॉन्फ़िगरेशन फार्म का

enum के परिणाम हैं: int {...} ।)

मैं वास्तव में केवल दिलचस्पी है इस फ़ंक्शन के एकल पैरामीटर संस्करण में और अन्य तर्कों की आवश्यकता नहीं है। क्या यह सही है?

मैं भी उत्सुक हूँ कि आप कैसे दो तर्क फॉर्म घोषित करेंगे (शायद यह 2 इंटप्टर होगा?)।

आपको __ रैगर कीवर्ड (जो कि undocumented है) का उपयोग करने की आवश्यकता है, बार्ट # का

उदाहरण

  वर्ग कार्यक्रम {[DllImport ("user32.dll")] स्थिर extern int wsprintf ([आउट] StringBuilder lpOut, स्ट्रिंग lpFmt, __arglist); स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {var sb = नया स्ट्रिंगबिल्डर (); Wsprintf (एसबी, "% s% s% s", __ कलाकार ("1", "2", "3")); Console.Write (sb.ToString ()); }}  

यह विभिन्न तरीकों को पिनविोक करने का कोई मानक तरीका नहीं है, अधिकांश समाधान इसे कई तरीकों में लपेटेगा उदा।

  [DllImport ("MyDll", कॉलिंग कन्वेंशन = कॉलिंग कन्वेंशन। सीडीसीएल)] स्थिर एक्सटर्न वाई MyArrgMethods1 (स्ट्रिंग एफएमटी, स्ट्रिंग एजी 1); [DllImport ("MyDll", कॉलिंग कन्वेंशन = कॉलिंग कन्वेंशन। CDEcl)) स्थिर Extern var MyVarArgMethods2 (स्ट्रिंग fmt, स्ट्रिंग arg1, स्ट्रिंग arg2);  

Comments

Popular posts from this blog

objective c - iPhone and it's wireless area -

unix - Listing all shared memory segments used by a process on AIX5.3+ -

tsql - Correct sql/hql query (aggregate in where clause) -