Jul-19-2019, 05:22 PM
I am running Python3.6
I am trying to run the example:
https://docs.python.org/3.6/extending/em...ded-python
I would like do to the same thing using shared library. I changed the main(..) to runSomething(..).
I create a shared library from the file.
I created another file with main(..) calling runSomething(..).
SHARED LIBRARY
I am trying to run the example:
https://docs.python.org/3.6/extending/em...ded-python
I would like do to the same thing using shared library. I changed the main(..) to runSomething(..).
I create a shared library from the file.
I created another file with main(..) calling runSomething(..).
SHARED LIBRARY
#include </usr/include/python3.6m/Python.h>
static int numargs=0;
/* Return the number of arguments of the application command line */
static PyObject*
emb_numargs(PyObject *self, PyObject *args)
{
if(!PyArg_ParseTuple(args, ":numargs"))
return NULL;
return PyLong_FromLong(numargs);
}
static PyMethodDef EmbMethods[] = {
{"numargs", emb_numargs, METH_VARARGS,
"Return the number of arguments received by the process."},
{NULL, NULL, 0, NULL}
};
static PyModuleDef EmbModule = {
PyModuleDef_HEAD_INIT, "emb", NULL, -1, EmbMethods,
NULL, NULL, NULL, NULL
};
static PyObject*
PyInit_emb(void)
{
return PyModule_Create(&EmbModule);
}
int runSomething(int argc, char *argv[]){
numargs = argc;
PyImport_AppendInittab("emb", &PyInit_emb);
Py_Initialize();
PyRun_SimpleString("import emb");
PyRun_SimpleString("print('Number of arguments', emb.numargs())");
Py_Finalize();
return 0;
}NEW MAIN FILEint main(int argc, char *argv[]){
runSomething();
return 0;
}How do I make this work?
