W
wardm
I have created a Dict object in a C++ App that calls (embedded) Python
functions.
The Dict is to be used to pass variable data between the C++ App and the
python functions.
However I cannot get the Python functions to 'see' the Dict created in the
C++ App.
The C++ app creates the Dict using the following functions:
// Create the dict for the viable data
m_pVarDictionary = PyDict_New();
// Create interface module
m_pInterfaceModule = PyImport_AddModule("InterfaceModule");
// Add the Dictionary to the interface Module
int status = PyModule_AddObject(m_pInterfaceModule, "VarDictionary" ,
m_pVarDictionary);
// Load the script module
m_pScriptModule = PyImport_ImportModule("MyScriptModule");
The C++ app calls the functions using the following functions:
PyObject* func = PyObject_GetAttrString(m_pScriptModule, "functionName");
if (func && PyCallable_Check(func))
{
PyObject* ret = PyObject_CallObject(func, NULL);
}
My test python function looks like this:
"""----------------------------------------------------------------------
Simple scripts for testing Dict Access
-------------------------------------------------------------------------"""
from InterfaceModule import VarDictionary
def hello():
# dumps the contents of VarDictionary
d2 = VarDictionary
f1.write(len(d2))
f1.write('\n')
for k, v in d2.iteritems():
f1.write(k)
f1.write (':')
f1.write(str(v))
f1.write('\n')
f1.close()
This python code throws an exception when it attempts to access the
"VarDictionary".
Does anyone know why this fails ?
I have tried adding code that dumps the Dict returned from vars(),
and could not see "VarDictionary" as an entry in the Vars() dict.
functions.
The Dict is to be used to pass variable data between the C++ App and the
python functions.
However I cannot get the Python functions to 'see' the Dict created in the
C++ App.
The C++ app creates the Dict using the following functions:
// Create the dict for the viable data
m_pVarDictionary = PyDict_New();
// Create interface module
m_pInterfaceModule = PyImport_AddModule("InterfaceModule");
// Add the Dictionary to the interface Module
int status = PyModule_AddObject(m_pInterfaceModule, "VarDictionary" ,
m_pVarDictionary);
// Load the script module
m_pScriptModule = PyImport_ImportModule("MyScriptModule");
The C++ app calls the functions using the following functions:
PyObject* func = PyObject_GetAttrString(m_pScriptModule, "functionName");
if (func && PyCallable_Check(func))
{
PyObject* ret = PyObject_CallObject(func, NULL);
}
My test python function looks like this:
"""----------------------------------------------------------------------
Simple scripts for testing Dict Access
-------------------------------------------------------------------------"""
from InterfaceModule import VarDictionary
def hello():
# dumps the contents of VarDictionary
d2 = VarDictionary
f1.write(len(d2))
f1.write('\n')
for k, v in d2.iteritems():
f1.write(k)
f1.write (':')
f1.write(str(v))
f1.write('\n')
f1.close()
This python code throws an exception when it attempts to access the
"VarDictionary".
Does anyone know why this fails ?
I have tried adding code that dumps the Dict returned from vars(),
and could not see "VarDictionary" as an entry in the Vars() dict.