Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python函数扩展C++ 我有一个C++应用程序。为了通过脚本给用户更多的动态控制,我选择在代码中嵌入一些python。FI,我的用户不热衷于学习和编写任何C++,所以共享LIB是不可能的。C++代码将在运行时调用Python中的用户定义函数。p>_Python_C++_Embed - Fatal编程技术网

用Python函数扩展C++ 我有一个C++应用程序。为了通过脚本给用户更多的动态控制,我选择在代码中嵌入一些python。FI,我的用户不热衷于学习和编写任何C++,所以共享LIB是不可能的。C++代码将在运行时调用Python中的用户定义函数。p>

用Python函数扩展C++ 我有一个C++应用程序。为了通过脚本给用户更多的动态控制,我选择在代码中嵌入一些python。FI,我的用户不热衷于学习和编写任何C++,所以共享LIB是不可能的。C++代码将在运行时调用Python中的用户定义函数。p>,python,c++,embed,Python,C++,Embed,例如:用户将编写以下python函数。当然,在实践中,用户提供的函数定义比简单的add要复杂一些 def userAdd(a, b): return a+b C++代码使用以下函数调用UsRead。我需要使用不同的a、b集多次运行evalUserFunc。这种方法与调用硬编码C++函数相比有多慢?我看到一个.pyc在执行时生成。是不是有些类似于A的东西?所以在C++中?先谢谢你 float myClass::evalUserFunc(float a, float b) { P

例如:用户将编写以下python函数。当然,在实践中,用户提供的函数定义比简单的add要复杂一些

def userAdd(a, b):
    return a+b

C++代码使用以下函数调用UsRead。我需要使用不同的a、b集多次运行evalUserFunc。这种方法与调用硬编码C++函数相比有多慢?我看到一个.pyc在执行时生成。是不是有些类似于A的东西?所以在C++中?先谢谢你

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;
}

性能影响足以鼓励不经常跨越本机脚本边界。执行用户编写的代码确实很危险,不仅因为它可能会破坏您的程序,而且因为经验丰富的恶意用户可能会造成一些实际损害。我建议你用其他方法来解决你的问题,或者干脆删除这个功能。还有其他的选择吗?