मैं एक सी फ़ंक्शन के लिए एक अजगर रैपर लिखने की कोशिश कर रहा हूं। सभी कोड लिखने के बाद, और इसे संकलित करने के बाद, पायथन मॉड्यूल आयात नहीं कर सकता है। मैं here दिए गए उदाहरण का पालन कर रहा हूं। कुछ टाइपो को ठीक करने के बाद, मैं इसे यहां पुन: उत्पन्न करता हूं। वहाँ एक फ़ाइल myModule.c है:.so मॉड्यूल पायथन में आयात नहीं करता है: गतिशील मॉड्यूल init फ़ंक्शन को परिभाषित नहीं करता
#include <Python.h>
/*
* Function to be called from Python
*/
static PyObject* py_myFunction(PyObject* self, PyObject* args)
{
char *s = "Hello from C!";
return Py_BuildValue("s", s);
}
/*
* Bind Python function names to our C functions
*/
static PyMethodDef myModule_methods[] = {
{"myFunction", py_myFunction, METH_VARARGS},
{NULL, NULL}
};
/*
* Python calls this to let us initialize our module
*/
void initmyModule()
{
(void) Py_InitModule("myModule", myModule_methods);
}
जब से मैं एक मैक macports साथ अजगर पर हूँ, मैं इसे के रूप में
$ g++ -dynamiclib -I/opt/local/Library/Frameworks/Python.framework/Headers -lpython2.6 -o myModule.dylib myModule.c
$ mv myModule.dylib myModule.so
संकलन हालांकि, जब मैं इसे आयात करने की कोशिश मैं कोई त्रुटि मिलती है।
$ ipython
In[1]: import myModule
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/Users/.../blahblah/.../<ipython console> in <module>()
ImportError: dynamic module does not define init function (initmyModule)
मैं इसे क्यों आयात नहीं कर सकता?
आपका कोड थोड़ा विकृत हो रहा है। –
@Ignacio: मैं बस उदाहरणों का पालन करने की कोशिश कर रहा हूं। क्या कोई आसान उदाहरण है जिससे आप मुझे इंगित कर सकते हैं? – highBandWidth
क्या शीर्ष बॉक्स में कोड वास्तव में आपके स्रोत फ़ाइल में आपके प्रतिबिंबित करता है? –