Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Python.h>
- #include <time.h>
- static PyObject *
- node_stuff(PyObject *self, PyObject *args)
- {
- return Py_BuildValue("s", "Hello World");
- }
- static PyMethodDef NodeMethods[] = {
- {"stuff", node_stuff, METH_VARARGS, "Just do stupid stuff."},
- {NULL, NULL, 0, NULL}
- };
- static PyModuleDef NodeModule = {
- PyModuleDef_HEAD_INIT, "node", NULL, -1, NodeMethods,
- NULL, NULL, NULL, NULL
- };
- static PyObject *
- PyInit_node(void)
- {
- PyModule_Create(&NodeModule);
- }
- int main(int argc, char *argv[])
- {
- PyObject *pModuleName, *pTestModule, *pTestFunc, *pTestResult, *pTestArgs;
- PyImport_AppendInittab("node", &PyInit_node);
- Py_Initialize();
- PyRun_SimpleString("import sys\nsys.path.append(\"\")");
- PyRun_SimpleString("import sys\nprint(sys.path)");
- pModuleName = PyUnicode_FromString("stuff");
- pTestModule = PyImport_Import(pModuleName);
- Py_DECREF(pModuleName);
- if (pTestModule != NULL)
- {
- PyObject_Print(PyObject_Dir(pTestModule), stdout, 0);
- PyObject_Print(PyObject_GetAttrString(pTestModule, "__name__"), stdout, 0);
- printf("\n");
- pTestFunc = PyObject_GetAttrString(pTestModule, "do_stuff");
- if (pTestFunc && PyCallable_Check(pTestFunc))
- {
- pTestArgs = PyTuple_New(0);
- pTestResult = PyObject_CallObject(pTestFunc, pTestArgs);
- Py_DECREF(pTestArgs);
- if (pTestResult != NULL)
- {
- printf("Result of call: %ld\n", PyLong_AsLong(pTestResult));
- Py_DECREF(pTestResult);
- }
- else
- {
- Py_DECREF(pTestFunc);
- Py_DECREF(pTestModule);
- PyErr_Print();
- fprintf(stderr, "Call failed!\n");
- return 1;
- }
- }
- else
- {
- if (PyErr_Occurred())
- PyErr_Print();
- fprintf(stderr, "Could not find function.\n");
- }
- Py_XDECREF(pTestFunc);
- Py_DECREF(pTestModule);
- }
- else
- {
- PyErr_Print();
- fprintf(stderr, "Failed to load module.\n");
- return 1;
- }
- Py_Finalize();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement