【问题标题】:How to set sys.argv in a boost::python plugin如何在 boost::python 插件中设置 sys.argv
【发布时间】:2014-11-21 03:29:26
【问题描述】:

我使用boost::python 将 Python 集成到 C++ 程序中。现在我希望通过boost::python::exec_file() 执行的Python 程序可以通过sys.argv 获取我的C++ 程序的命令行参数。这可能吗?

【问题讨论】:

  • 请澄清:“设置sys.argv”与“获取命令行”——你想读或写这个名字?
  • 我希望 Python 代码在 sys.argv 中获得 C++ 命令行,也就是说,如果我用 Python print sys.argv 编写,那么它应该打印加载带有 @ 的 Python 程序的 C++ 程序的参数987654327@.

标签: python command-line-arguments boost-python


【解决方案1】:

在调用exec_file() 之前(但在Py_Initialize() 之后,您应该调用PySys_SetArgv(argc, argv);,并从程序的main() 中为其提供int argcconst char *argv[]

【讨论】:

  • 谢谢!唯一的事情是我需要 strdup() 所有字符串并将 char** 传递给此函数,因为 Python API 想要获得所有这些指针的所有权以释放它们。但后来它起作用了,尽管在 C++ 中做这样的事情感觉非常难看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2021-11-18
  • 2013-05-31
  • 1970-01-01
  • 2017-08-17
  • 2013-09-11
  • 2018-11-09
相关资源
最近更新 更多