सी

2012-11-26 29 views
6

में पाइथन एम्बेड करते समय नकली आयात विफल रहता है मैं C++ कोड में एक पायथन प्रोग्राम एम्बेड करने की कोशिश कर रहा हूं। मेरी समस्या है कि पाइथन स्क्रिप्ट का उपयोग करना जिसमें एक numpy आयात शामिल है। उदाहरण के लिए, अगर मैं का उपयोग निम्नलिखित C++ कोडसी

#include <Python.h> 
int main(int argc,char *argv[]) 
{ 
double 
    x=2., 
    xp=4., 
    dt=6., 
    y=8, 
    yp=1, 
    dz=6; 
Py_Initialize(); 

PyObject* myModuleString = PyString_FromString((char*)"log"); 
PyObject* myModule = PyImport_Import(myModuleString); 


PyObject* myFunction = PyObject_GetAttrString(myModule,(char*)"derive"); 
PyObject* args = PyTuple_Pack( 6, 
PyFloat_FromDouble(x), 
PyFloat_FromDouble(xp), 
PyFloat_FromDouble(dt), 
PyFloat_FromDouble(y), 
PyFloat_FromDouble(yp), 
PyFloat_FromDouble(dz)); 

PyObject* myResult = PyObject_CallObject(myFunction, args); 

PyObject *ts= PyTuple_GetItem(myResult,0); 
PyObject *zs= PyTuple_GetItem(myResult,1); 
double result_t = PyFloat_AsDouble(ts); 
double result_z = PyFloat_AsDouble(zs); 
printf("%3f \n %f \n", result_t,result_z); 

Py_Finalize(); 

system("pause"); 

return 0; 
} 
निम्नलिखित log.py स्क्रिप्ट जो समारोह derive

def derive(x,xp,dt,y,yp,dz): 
return log(abs(x - xp)/dt),exp((y-yp)/dz) 

इसे सही ढंग से चलाता है होते हैं, लेकिन log.py from numpy import array शामिल करता है, तो साथ

, यह

from numpy import array 
def derive(x,xp,dt,y,yp,dz): 
return log(abs(x - xp)/dt),exp((y-yp)/dz) 

उत्तर

2

मुझे लगता है कि आप स्थिर रूप से लिंक कर रहे हैं लेकिन सभी प्रतीकों को बनाए नहीं रखते हैं, जो डायना लोड करने के लिए आवश्यक हैं माइक एक्सटेंशन मॉड्यूल (यानी। -Xlinker -export-dynamic)। Linking Requirements देखें, जो अनुशंसा करता है कि आप distutils.sysconfig.get_config_var('LINKFORSHARED') से सही विकल्पों को पूछें।

बीटीडब्ल्यू, विविधता फ़ंक्शन Py_BuildValueargs बनाने का एक और सुविधाजनक तरीका है।