使用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 '在输出文件夹上的写访问权限将验证是否存在这种情况。
两件事:
- 你使用双引号,没有转义路径中的。
- 你没有使用g++的完整路径
第一个很重要,因为后面跟一些东西在这样的字符串中有特殊的含义(您可能知道n是新行),第二个是相关的,因为PHP环境可能有不同的搜索路径。
解决方案可能是
system("c:\path\to\g++ c:\wamp\www\grader\hello.cpp -O3 -o C:\wamp\www\grader\hello.exe");
或者你可以使用单引号来代替双引号,它们使用不同的,不那么严格的转义规则
system('c:pathtog++ c:wampwwwgraderhello.cpp -O3 -o C:wampwwwgraderhello.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。
再次感谢大家,他们帮了我很多,我也学到了很多。
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到