我有一个用C ++编写的主应用程序。为了通过脚本为用户提供更多动态控制,我选择在代码中嵌入一些python。仅供参考,我的用户并不热衷于学习和编写任何C ++,因此共享库是不可能的。 C ++代码将在运行时调用python中的用户定义函数。
Ex:用户会编写以下python函数。当然,在实践中,用户会提供比简单添加更复杂的功能定义。
def userAdd(a, b):
return a+b
C ++代码使用以下函数来调用userAdd。我需要使用各种(a,b)集多次运行evalUserFunc。将此方法与调用硬编码C ++函数相比有多慢。我在执行时看到了.pyc。这有些类似于C ++中的.so吗?先感谢您。
float myClass::evalUserFunc(float a, float b)
{
PyObject *pFunc, *pArgs;
PyObject *pa, *pb, *pValue;
int res = 0;
if (_pModule != NULL) {
pFunc = PyObject_GetAttrString(_pModule, 'userAdd');
pArgs = PyTuple_New(2);
pa = PyFloat_FromDouble(a);
pb = PyFloat_FromDouble(b);
PyTuple_SetItem(pArgs, 0, pa);
PyTuple_SetItem(pArgs, 1, pb);
pValue = PyObject_CallObject(pFunc, pArgs);
res = PyFloat_AsDouble(pValue);
}
return res;
}