擅长:python、mysql、java
<p>如前所述,使用PyRun_SimpleString似乎是个坏主意。</p>
<p>您绝对应该使用C-API(<a href="http://docs.python.org/c-api/" rel="noreferrer">http://docs.python.org/c-api/</a>)提供的方法。</p>
<p>阅读导言是理解其工作方式的第一步。</p>
<p>首先,您必须了解PyObject,它是C API的基本对象。它可以表示任何类型的python基本类型(string、float、int…)。</p>
<p>有许多函数可以将python string转换为char*或PyFloat转换为double。</p>
<p>首先,导入模块:</p>
<pre><code>PyObject* myModuleString = PyString_FromString((char*)"mytest");
PyObject* myModule = PyImport_Import(myModuleString);
</code></pre>
<p>然后获取对函数的引用:</p>
<pre><code>PyObject* myFunction = PyObject_GetAttrString(myModule,(char*)"myabs");
PyObject* args = PyTuple_Pack(1,PyFloat_FromDouble(2.0));
</code></pre>
<p>然后得到你的结果:</p>
<pre><code>PyObject* myResult = PyObject_CallObject(myFunction, args)
</code></pre>
<p>回到双人间:</p>
<pre><code>double result = PyFloat_AsDouble(myResult);
</code></pre>
<p>显然,您应该检查错误(参见Mark Tolonen给出的链接)。</p>
<p>如果你有任何问题,不要犹豫。祝你好运。</p>