Я использую PHP на компьютере Windows. Я также использую Dev C ++. Я могу скомпилировать файл .cpp на CMD с помощью этой команды:
g++ hello.cpp -O3 -o hello.exe
Теперь я пытаюсь выполнить ту же команду, используя функцию php system (), поэтому она выглядит так:
system ("g ++ c: \ wamp \ www \ grader \ hello.cpp -O3 -o C: \ wamp \ www \ grader \ hello.exe");
но он не компилируется. Я потерян, пожалуйста, скажите мне, что мне не хватает?
Я также посмотрел на этот вопрос, и это именно то, что мне нужно, но я не смог найти полезное решение для моего дела:
Php-скрипт для компиляции c ++-файла и запуска исполняемого файла с входным файлом
Две вещи:
Первый из них важен, так как \ следует, что что-то имеет особое значение в такой строке (вы можете знать \ n как новую строку), вторая важна, поскольку среда PHP может иметь другой путь поиска.
Решение может быть
system("c:\\path\\to\\g++ c:\\wamp\\www\\grader\\hello.cpp -O3 -o C:\\wamp\\www\\grader\\hello.exe");
В качестве альтернативы вы можете использовать одинарные кавычки, вместо двойных кавычек, использовать разные, менее строгие правила экранирования
system('c:\path\to\g++ c:\wamp\www\grader\hello.cpp -O3 -o C:\wamp\www\grader\hello.exe');
или используйте / вместо \, который также поддерживается окнами.
system("c:/path/to/g++ c:/wamp/www/grader/hello.cpp -O3 -o C:/wamp/www/grader/hello.exe");
То, что вы делаете, это ваш выбор, в то время как многие считают первый из них уродливым, а последний – плохим стилем в Windows 😉
Используйте команду PHP exec.
echo exec('g++ hello.cpp -O3 -o hello.exe');
должно сработать.
В PHP существует целый ряд различных команд exec и system, см. Здесь:
http://www.php.net/manual/en/ref.exec.php
Если вы хотите получить выход в переменную, используйте:
$variable = exec('g++ hello.cpp -O3 -o hello.exe');
Если это не сработает, убедитесь, что g ++ доступен на вашем пути и что вы вошли в систему с достаточным количеством привилегий, чтобы позволить ему выполнить.
Вы также можете обнаружить, что PHP не работает, по сути, выполняется вашим веб-сервером (если только вы не используете PHP из командной строки), а идентификатор пользователя веб-сервера может не иметь права на запись в папку, где G ++ пытается создать выходной файл.
Временное предоставление доступа на запись к «Everybody» в выходной папке будет проверять, если это так.
Спасибо всем. Я попытался запустить коды, приведенные в предыдущих сообщениях, и это сработало как шарм.
Я использовал следующий код, используя мой браузер
$var = exec("g++ C:/wamp/www/cpp/hello.cpp -O3 -o C:/wamp/www/cpp/hello.exe"); echo $var;
Создается файл exe. Я могу увидеть результат, когда я запускаю exe-файл, но проблема в том, что я запускаю вышеуказанный код в браузере, результат не отображается на веб-странице. Я дал полное разрешение для всех пользователей, но все же даю, не показывает результат на веб-странице.
Мне действительно нужна помощь в этом, так как я делаю проект по моделируемому отжигу, где хочу получить результат от скомпилированной программы на C ++ и отобразить его на веб-странице с помощью некоторых высокоуровневых jquery.
Еще раз спасибо всем, это помогло мне много, и я тоже многому научился.