मैं एक्सेल VBA से अपने ही सी ++ dll समारोह कॉल करना चाहते हैं:एक्सेल वीबीए से सी ++ में पॉइंटर का संदर्भ पास करना संभव है?
void my_cpp_fun (int& n_size, double*& my_array);
सी ++ समारोह चर आकार n_size की एक सरणी my_array (इस आकार my_cpp_fun भीतर गणना की जाती है) पैदा करता है।
क्या मैं अपने सी ++ कोड में किसी एक्सेल विशिष्ट सामग्री का उपयोग किये बिना इस कार्य को वीबीए के रूप में इंटरफ़ेस कर सकता हूं?
तो बुनियादी तौर पर मैं क्या देख रहा हूँ एक VBA तरह
Declare Sub my_cpp_fun Lib "my_cpp.dll" (n_size As Long, Ref_to_Ptr_Qualifier my_array As Double)
घोषित बयान एक अतिरिक्त समस्या यह है कि सिर्फ मेरे लिए हुआ है: यदि मैं ग अंदर स्मृति को आबंटित ++ dll नए का उपयोग कर, कि स्मृति एक बार उपलब्ध हो जाएगा डीएलएल समारोह वीबी को नियंत्रण देता है? अगर ऐसा नहीं है, ऊपर व्यर्थ है ...
तो यह एक्सेल एपीआई का उपयोग कर के बिना संभव नहीं है? मैं की तरह कुछ सरल की सोच रहा था (लांग, Magic_Ref_to_ptr_qualifier my_array डबल के रूप में के रूप में n_size) – Hans
घोषित उप my_cpp_fun लिब "my_cpp.dll" यह संभव है, लेकिन यह तरीका है उस मार्ग पर जाने के लायक होने की तुलना में अधिक परेशानी। वीबी के साथ इंटरफेसिंग करते समय COM कच्चे डीएल को लपेटना बहुत आसान है। –
नहीं, यदि इंटरफ़ेस का सतह क्षेत्र छोटा है तो घोषणा COM से आसान है। COM पीछे की तरफ एक शाही दर्द है, खासकर सी ++ से। –