我在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
答案 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)
两件事:
第一个很重要,因为\后跟某个字符串具有特殊含义(你可能知道\ 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。
再次感谢所有人,它帮助了我很多,我也学到了很多。