2014-11-20 20 views
3

我使用boost::python將Python集成到C++程序中。現在我想通過boost::python::exec_file()執行的Python程序可以通過sys.argv獲得我的C++程序的命令行參數。這可能嗎?如何在boost :: python插件中設置sys.argv

+0

請澄清:「設定'sys.argv'」與「獲得命令行「 - 你想讀取或寫入這個名字? – 2014-11-20 19:12:50

+0

我希望Python代碼獲得'sys.argv'中的C++命令行,即如果我用Python編寫'print sys.argv',那麼它應該打印參數使用'boost :: python :: exec_file()'加載Python程序的C++程序。 – 2014-11-20 19:22:41

回答

2

在你打電話之前,以exec_file()(但Py_Initialize()後,你應該調用PySys_SetArgv(argc, argv);給它從int argcconst char *argv[]你的程序的main()

+1

謝謝!唯一的問題是我需要strdup()所有的字符串,並且將char **傳遞給此函數,因爲該Python API希望獲得所有這些指針的所有權以釋放它們。但是,它仍然有效,儘管在C++中感覺非常醜陋以至於做不了這樣的事情。 – 2014-11-20 22:19:00