使用PHP编译c++文件


Compile C++ file Using PHP

我在Windows机器上使用PHP。我也使用Dev c++。我可以完美地编译。cpp文件在CMD使用以下命令:

g++ hello.cpp -O3 -o hello.exe

现在我要做的是使用php system()函数运行相同的命令,所以它看起来像这样:

系统("g + + c: ' wamp ' www '平地机' hello.cpp o3 - o c: ' wamp ' www '平地机' hello . exe");

但是它不能编译。我迷路了,请告诉我我错过了什么?

我也查了这个问题,这正是我需要的,但我找不到一个有用的解决方案,为我的情况:

Php脚本,编译c++文件并运行可执行文件,输入文件

使用PHP执行命令

echo exec('g++ hello.cpp -O3 -o hello.exe');

一整个家族都是不同的执行官&PHP中的系统命令,见这里:

http://www.php.net/manual/en/ref.exec.php

如果您希望输出到一个变量中,那么使用:

$variable = exec('g++ hello.cpp -O3 -o hello.exe');

如果这不起作用,那么确保g++在你的路径中可用,并且你登录时有足够的权限允许它执行。

你可能还会发现它失败是因为PHP实际上是由你的web服务器执行的(除非你也从cmd提示符运行PHP),并且web服务器用户ID可能没有对g++试图创建输出文件的文件夹的写访问权限。

临时授予' everyone '在输出文件夹上的写访问权限将验证是否存在这种情况。

两件事:

  1. 你使用双引号,没有转义路径中的'。
  2. 你没有使用g++的完整路径

第一个很重要,因为'后面跟一些东西在这样的字符串中有特殊的含义(您可能知道'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');

或者使用/代替',windows也支持。

system("c:/path/to/g++ c:/wamp/www/grader/hello.cpp -O3 -o C:/wamp/www/grader/hello.exe");

你做什么是你的选择,而许多人可能认为第一个是丑陋的,最后一个是糟糕的风格在Windows;-)

感谢大家。我试着运行上面帖子中给出的代码,它像一个魅力。

我使用浏览器 运行了以下代码
$var =  exec("g++ C:/wamp/www/cpp/hello.cpp -O3 -o C:/wamp/www/cpp/hello.exe");
echo $var;

exe文件创建完成。当我运行exe文件时,我能够看到结果,但问题是当我在浏览器中运行上述代码时,结果未显示在网页上。我给了所有用户完全访问权限,但仍然没有在网页上显示结果。

我真的需要帮助,因为我正在做一个模拟退火项目,我想从编译的c++程序中获得结果,并在网页上显示一些jquery highcharts。

再次感谢大家,他们帮了我很多,我也学到了很多。