का उपयोग कर सी ++ फ़ंक्शन से पायथन तक सरणी कैसे वापस करें I Python में C++ फ़ंक्शन को लागू करने के लिए ctypes का उपयोग कर रहा हूं। सी ++ फ़ंक्शन को एक पॉइंटर को सरणी में वापस करना चाहिए। दुर्भाग्य से मुझे पता नहीं चला है, पायथन में सरणी का उपयोग कैसे करें। मैंने numpy.frombuffer की कोशिश की, लेकिन यह सफल नहीं था। यह सिर्फ मनमानी संख्याओं की एक सरणी लौटा दी। जाहिर है मैंने इसे सही ढंग से उपयोग नहीं किया।cty+
function.cpp की सामग्री::
extern "C" int* function(){
int* information = new int[10];
for(int k=0;k<10;k++){
information[k] = k;
}
return information;
}
wrapper.py की सामग्री:
import ctypes
import numpy as np
output = ctypes.CDLL('./library.so').function()
ArrayType = ctypes.c_double*10
array_pointer = ctypes.cast(output, ctypes.POINTER(ArrayType))
print np.frombuffer(array_pointer.contents)
सी ++ फ़ाइल मैं उपयोग कर रहा हूँ संकलन करने के लिए यहाँ आकार 10 की एक सरणी के साथ एक सरल उदाहरण है :
g++ -c -fPIC function.cpp -o function.o
g++ -shared -Wl,-soname,library.so -o library.so function.o
क्या आपके पास कोई सुझाव है कि मुझे पायथन में सरणी मानों तक पहुंचने के लिए क्या करना है?
बेशक मैं c_double और POINTER जैसे कुछ विशिष्ट ctypes कार्यों को आयात करना भूल गया। मैं बस उन्हें यहां जोड़ना भूल गया। – dolby