【问题标题】:Running C++ executables compiled in Cygwin on Windows在 Windows 上运行在 Cygwin 中编译的 C++ 可执行文件
【发布时间】:2012-02-11 22:09:00
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: php c++ windows cygwin wamp


    【解决方案1】:

    你可以做一些事情:

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

    【讨论】:

    • 回答得最彻底,但感谢所有回答的人。真的就像复制 3 个 DLL 一样简单!我会尽快尝试您的其他解决方案。
    【解决方案2】:

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

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

    如果你对这种依赖关系不是太疯狂,你可以尝试用 MinGW 构建你的 hello world,而不是这样的依赖关系。

    【讨论】:

      【解决方案3】:

      将cygwin1.dll复制到test.exe所在目录

      The program can't start because cygwin1.dll is missing... in Eclipse CDT

      【讨论】:

        猜你喜欢
        • 2016-09-10
        • 2012-12-03
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 2013-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多