Php 运行C++;在Windows上用Cygwin编译的可执行文件

Php 运行C++;在Windows上用Cygwin编译的可执行文件,php,c++,windows,cygwin,wamp,Php,C++,Windows,Cygwin,Wamp,想法 我在CGGWin上用G++编译了一个C++ exe,我希望能够通过PHP把exe输出到我的HTML中。也就是说,我有一个C++可执行的“Test.exe”,它在运行时输出“hello,World!”。那么从逻辑上讲,我应该能够做到 <?=exec("./test.exe")?> 将test.exe文件的输出发送到文件 问题 我正在Win7上的本地WAMP服务器上测试这个。显然,Win7 WAMP上的exec和system调用通过Windows命令提示符执行,这意味着它运行

想法
我在CGGWin上用G++编译了一个C++ exe,我希望能够通过PHP把exe输出到我的HTML中。也就是说,我有一个C++可执行的“Test.exe”,它在运行时输出“hello,World!”。那么从逻辑上讲,我应该能够做到

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

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

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

“程序无法启动,因为您的数据库中缺少cygwin1.dll 计算机。请尝试重新安装程序以解决此问题。“


那么,如何使windows batch能够在编译文件中执行cygwin?

将cygwin1.dll复制到包含test.exe的目录中


请参见

您可以做几件事:

  • 您可以使用Visual Studio编译应用程序(我相信Microsoft提供了免费版本…)。这是我个人要走的路线。您不需要依赖cygwin DLL(除非您是在cygwin安装的某些部分中进行编译),而且您的可执行文件在Windows系统中的可移植性会更好
  • 您可以将cygwin1.dll的位置放入系统路径环境变量中。这具有使用cygwin构建的未来可执行文件成功运行的优点,但也有一个缺点,即如果您希望分发应用程序,其他用户将无法立即运行它
  • 您可以将cygwin安装的/bin目录中的cygwin1.dll复制到与可执行文件相同的文件夹中。这是可移植的(在Windows系统中…在某种程度上),但缺点是它可能违反Cygwin许可证(我不确定没有阅读许可证)。我只推荐这条路线用于测试目的
  • “由于计算机中缺少cygwin1.dll,程序无法启动。请尝试重新安装程序以解决此问题。”

    这里的错误信息非常清楚。使用Cygwin编译的可执行文件需要cygwin1.dll才能运行。简单的方法是将cygwin1.dll复制到与可执行文件相同的位置,以便它可以找到它


    如果您对这种依赖性不太感兴趣,您可以尝试使用MinGW构建您的hello world,而MinGW没有这种依赖性。

    回答得非常透彻,但感谢所有回答的人。这真的就像复制3个DLL一样简单!我很快会尝试你的其他解决方案。