2013-10-07 2 views
1

У меня есть проект C++ и проект Python под одним решением в Visual Studio. Я не хочу изменять проект C++, потому что он сложный и завершенный. Я больше не хочу касаться этого. Поэтому, чтобы интегрировать их, я решил вызывать проект C++ в Python, а не наоборот.Вызов проекта C++ project() в Python в Visual Studio?

Я хочу передать параметры из Python в

int main(int argc, char** argv) 

из проект C++.

Как я могу это сделать?

ответ

4

Аргументы main() являются аргументами командной строки программы. Так что, если вы, например, это в Python:

subprocess.Popen(['myCppprogram.exe', 'foo', 'bar'], ...) 

то следующий будет держать в main():

int main(int argc, char** argv) 
{ 
    assert(argc == 3); 
    assert(argv[1] == std::string("foo"); 
    assert(argv[2] == std::string("bar"); 
} 
+0

Но что такое второй аргумент ...? И как я могу выбрать запуск сценария Python? После того, как я нажму зеленый отладчик Local Window, отладчик отправится на поиск C++ main() и запустит его. –

+0

@ perfectionm1ng Что вы подразумеваете под «2-м аргументом?» 'argv' - это массив строк в стиле C, содержащий отдельные аргументы командной строки, если вы имеете в виду это. – Angew

+1

@ perfectionm1ng Какие проекты запускаются, когда вы нажимаете «Начать отладку», управляются настройками «StartUp project». И в «Project> Properties> Debugging» вы можете установить исполняемый файл, аргументы и т. Д. Подробнее см. В помощи VS. – Angew

1

Согласно тому, что я понял из вашего вопроса, вы хотите вызвать файл с расширением .exe из python и передать аргументы в файл C++.

import subprocess 

program = 'path to your exe file' 
argument = "0" 

subprocess.call([program, argument]) 

Это будет выполнять exe-файл из питона и аргументы, передаваемые можно прочитать в C++ основной в качестве членов ARGV массива.

Смежные вопросы