php - 在 Windows 上运行在 Cygwin 中编译的 C++ 可执行文件

标签 php c++ windows cygwin wamp

想法
我在 Cygwin 上使用 G++ 编译了一个 C++ exe,我希望能够通过 PHP 将该 exe 的输出放入我的 HTML 中。也就是说,假设我有一个 C++ 可执行文件“test.exe”,它输出“Hello, World!”运行时。那么按理来说,我应该可以做到

<?=exec("./test.exe")?>

将test.exe文件的输出发送到文件。

问题
我正在 Win7 上的本地 WAMP 服务器上对此进行测试。显然,Win7 WAMP 上的 execsystem 调用通过 Windows 命令提示符进行,这意味着它正在运行批处理而不是 bash。出于某种原因,批处理不喜欢 Cygwin 编译的可执行文件,给出错误:

"The program can't start because cygwin1.dll is missing from your computer. Try reinstalling the program to fix this problem."

那么,我怎样才能使 Windows 批处理可以执行 cygwin 编译的文件呢?

最佳答案

你可以做一些事情:

  1. 您可以使用 Visual Studio 编译您的应用程序(我相信 Microsoft 提供了免费版本... Visual Studio Express)。这是我个人会选择的路线。您不需要依赖 cygwin DLL(除非您在 cygwin 安装的某些部分进行编译),并且您的可执行文件在 Windows 系统之间的可移植性要好得多。
  2. 您可以将 cygwin1.dll 的位置放入您的系统 PATH 环境变量中。这具有使用 cygwin 构建的 future 可执行文件成功运行的优点,但缺点是如果您想要分发您的应用程序,其他用户将无法立即运行它。
  3. 您可以将 cygwin 安装的/bin 目录中的 cygwin1.dll 复制到与可执行文件相同的文件夹中。这是可移植的(在 Windows 系统之间......在某种程度上),但缺点是它可能违反 Cygwin 许可证(我不确定是否阅读许可证)。我只推荐这条路线用于测试目的。

关于php - 在 Windows 上运行在 Cygwin 中编译的 C++ 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8888967/

相关文章:

wpf - Microsoft .Net Framework 4.6.1 (KB4040973) 的补丁更新导致 WPF 组合框出现问题

c - 在 Windows 中运行程序时,什么决定了该程序的允许内存?

php - 函数的 return 语句未按预期工作

php - 无法创建缓存目录.. 或目录不可写。在 Laravel 中进行无缓存

c++ - 在这种情况下我会使用哪个循环

c++ - 如何在代码中正确使用指针

linux - 如何将文本/纯文本转换为文本/x.shellscript

php - codeigniter 3 get_where sql查询函数

php - CakePHP 不会按条件应用组

c++ - 提交 Qt 5.3 应用程序以供 Mac App Store 审核