使用PHP编译C ++文件

时间:2011-11-24 23:09:51

标签: php c++ cmd

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

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 script to compile c++ file and run the executable file with input file

3 个答案:

答案 0 :(得分:7)

使用PHP exec命令。

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 ++尝试的文件夹的写访问权限创建输出文件。

暂时授予输出文件夹中“Everybody”的写入权限,将验证是否属于这种情况。

答案 1 :(得分:4)

两件事:

  1. 您正在使用双引号,并且没有转义路径中的\。
  2. 您没有使用g ++的完整路径。
  3. 第一个很重要,因为\后跟某个字符串具有特殊含义(你可能知道\ 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上的坏风格; - )

答案 2 :(得分:0)

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

我使用浏览器运行以下代码

$var =  exec("g++ C:/wamp/www/cpp/hello.cpp -O3 -o C:/wamp/www/cpp/hello.exe");
echo $var;

创建了exe文件。我运行exe文件时能看到结果,但问题是当我在浏览器中运行上面的代码时,结果没有显示在网页上。我向所有用户授予了完全访问权限,但仍然不会在网页上显示结果。

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

再次感谢所有人,它帮助了我很多,我也学到了很多。