【问题标题】:How can I compile C/C++ code in PHP on the Windows platform?如何在 Windows 平台上用 PHP 编译 C/C++ 代码?
【发布时间】:2009-05-30 11:39:24
【问题描述】:

谁能帮我在Windows平台上用PHP编译C++代码?我正在使用 Microsoft Visual C++ 6.0。

我已经尝试了以下我知道的选项,但它们都不起作用:

system('test.c') 
exec('test.c')

文件 'test.c' 已放在我的 php/www/ 文件夹中。

我需要先编译代码,生成test.exe,然后使用exec()运行exe文件。


编辑:

在这段代码“test.c”中,我正在读取文件“data.txt”。 data.txt 的内容每 5 秒更改一次。这就是为什么我首先需要在 PHP 中编译,然后运行新的 exe 文件。

【问题讨论】:

  • 我假设你至少已经超过了 C++ 能力的 helloworld 级别?如果你只是下载编译的应用程序,也许会更好?
  • 为什么不直接在 PHP 中使用 file_get_contents() 来读取文件,而不是制作一个 C/C++ 应用程序来读取文件?
  • 这似乎是从文件中读取文本的荒谬解决方案...尝试 $data = file_get_contents('/path/to/file/data.txt');然后从那里去。会更坚固..?

标签: php c++ command-line compiler-construction compilation


【解决方案1】:

创建一个 .bat 文件:

  • 运行 Visual Studio 附带的 vcvars32.bat 文件
  • 运行“cl.exe yourprogram.c”

然后从 PHP 启动该 .bat 文件。 (不知道你会怎么做)

【讨论】:

    【解决方案2】:

    您需要显式调用编译器 (cl.exe) 和链接器 (See compiler reference) 或使用 makefile (g++ reference,但说明了重点)

    【讨论】:

      【解决方案3】:

      我假设你想从一个 php 脚本调用你的编译器?

      如果是这种情况,您首先必须调用编译器本身 - 而不仅仅是将源代码的文件名传递给系统。对于 MSVC++,您需要查找“cl.exe”。

      另外,如果您的环境中没有设置相应的路径,则需要使用完整路径。

      确保首先了解如何从命令提示符手动调用 cl.exe。 一旦你理解了这一点,你就可以尝试从一个 php 脚本中调用它。

      但是,您需要意识到还有其他因素需要考虑,例如编译文件所需的时间与超时之前允许执行 php 脚本的时间。

      我认为,您可能需要向我们提供更多信息,说明您究竟想做什么以及为什么要这样做。

      【讨论】:

        【解决方案4】:

        http://4answered.com/questions/view/7e1694/Compile-C-file-Using-PHP 这有助于我编译和运行 C 程序(请参阅此链接上的视频)。使用这个我写了这个 php 代码,它可以工作

        <?php
        
        putenv("PATH=C:\\MinGW\\bin");
        exec("gcc C:\\test\\q.c -o C:\\test\\q1.exe");
        system("C:\\test\\q1.exe",$output);
        echo $output;
        

        我的q.c

        #include <stdio.h>
        
        int main(int argc, char* argv[])
        {
          printf("Hello world");
          return 0;
        }
        

        所以你会在 $output 中看到“Hello world0”

        【讨论】:

          猜你喜欢
          • 2023-04-06
          • 2017-11-09
          • 1970-01-01
          • 2016-10-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多