想法
我在 Cygwin 上使用 G++ 编译了一个 C++ exe,我希望能够通过 PHP 将该 exe 的输出放入我的 HTML 中。也就是说,假设我有一个 C++ 可执行文件“test.exe”,它输出“Hello, World!”运行时。那么按理来说,我应该可以做到
<?=exec("./test.exe")?>
将test.exe文件的输出发送到文件。
问题
我正在 Win7 上的本地 WAMP 服务器上对此进行测试。显然,Win7 WAMP 上的 exec
和 system
调用通过 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 编译的文件呢?
最佳答案
你可以做一些事情:
- 您可以使用 Visual Studio 编译您的应用程序(我相信 Microsoft 提供了免费版本... Visual Studio Express)。这是我个人会选择的路线。您不需要依赖 cygwin DLL(除非您在 cygwin 安装的某些部分进行编译),并且您的可执行文件在 Windows 系统之间的可移植性要好得多。
- 您可以将 cygwin1.dll 的位置放入您的系统 PATH 环境变量中。这具有使用 cygwin 构建的 future 可执行文件成功运行的优点,但缺点是如果您想要分发您的应用程序,其他用户将无法立即运行它。
- 您可以将 cygwin 安装的/bin 目录中的 cygwin1.dll 复制到与可执行文件相同的文件夹中。这是可移植的(在 Windows 系统之间......在某种程度上),但缺点是它可能违反 Cygwin 许可证(我不确定是否阅读许可证)。我只推荐这条路线用于测试目的。
关于php - 在 Windows 上运行在 Cygwin 中编译的 C++ 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8888967/