0

以下は、この例の要約形式です。http ://www.boost.org/doc/libs/1_51_0/libs/python/doc/v2/exec.html#examples

ファイルscript.pyに保存されているC++から呼び出すPython関数:

def greet():
   return 'Hello from Python!'

Python関数を実行するためのC++コード:

#include <iostream>
#include <string>
#include <boost/python.hpp>

using namespace boost::python;

void greet()
{ 
  object main = import("__main__");
  object global(main.attr("__dict__"));
  object result = exec_file("script.py", global, global);
  object greet = global["greet"];
  std::string message = extract<std::string>(greet());
  std::cout << message << std::endl;
}

私の質問は、 greetを呼び出すことができるようにメインオブジェクト、グローバルオブジェクト、および結果オブジェクトを存続させる必要があるかどうかです。

4

1 に答える 1

0

いいえ、あなたはしません。生きている必要があるものはすべて、オブジェクトが保持する参照によって生き続けgreetます。自分の周りにオブジェクトを保持する必要はありません。

于 2013-02-18T13:35:05.927 に答える