【问题标题】:Visual Studio compiles but the exe isn't thereVisual Studio 编译,但 exe 不存在
【发布时间】:2011-03-14 23:21:09
【问题描述】:

在其他人的环境中编译良好的源代码在我的环境中无法正常工作。当我进行重建时,会发生编译,但是当 Visual Studio 将 exe 从 /obj/debug/{solution} 移动到 /debug/{solution} 时,它无法在 /obj/debug/{solution} 中找到 exe。即使在我重新安装了 Visual Studio 之后,它也会变得更加疯狂。在其他人的环境中,它可以找到。请注意,这是一个 windows mobile 6,compact framework 3.5 项目,Visual C++ 项目。

编辑:正在使用 Visual Studio 2008。

EDIT2:再次查看日志后发现它说它正在编译,但它并没有真正编译。有趣的是,它在尝试链接代码之前不会抛出任何错误。当它去链接目标文件时,它们不存在并且失败了。

【问题讨论】:

  • 添加 Visual Studio 版本。也许它会有所作为。

标签: windows visual-studio visual-c++ windows-mobile compiler-errors


【解决方案1】:

在解决方案属性页面中,检查您期望的exe路径是否与链接器->输出文件中指定的路径相同。

另一个明显的错误可能是,检查您正在构建的构建配置。你可能正在做一个发布版本并期待一个调试可执行文件:) 我已经做过几次了。

【讨论】:

  • 请注意,完全相同的源代码行可以在另一台 PC 中正确构建。一切都一样,只是一台不同的计算机。此外,Visual Studio 设置为 Debug 构建。它尝试构建它,您可以在输出中看到它正在构建调试版本。 Visual Studio 抛出一个错误,例如“将 /obj/debug/{solution} 复制到 /debug/{solution} 时出错,/obj/debug/{solution} 不存在”。如果我查看任何一个目录,Visual Studio 都是正确的,那里什么都没有。但我查看日志,它正在编译它并输出 EXE。太疯狂了。
【解决方案2】:

如果您创建一个新的“hello world”WM 项目,它可以工作吗?

如果是这样,您可以比较解决方案文件以检查可能导致此问题的差异。

【讨论】:

  • 在此工作站上不起作用的解决方案文件在所有其他工作站上都​​起作用。
  • 不过,由于这是特定于机器的,而且我的建议很容易测试,我建议你这样做,看看是否有差异。
【解决方案3】:

也许您没有对输出文件夹的写入权限?如果您在 Vista/7 上运行,您的 Visual Studio 是否以提升的方式运行?

【讨论】:

  • 工作站使用的是 Windows XP。它有写入权限。
【解决方案4】:

如果完全相同的解决方案适用于其他机器,那么这是一个环境问题,再多看项目、链接器等也无法解决这个问题。环境有什么不同?相同的服务包和 QFE 是否不仅适用于 Studio,还适用于操作系统?处理器(64/32 位)有区别吗?你的权限是一样的吗?是否安装了相同的 SDK?

我同意 Shahi 的观点,即尝试针对同一个 SDK 构建一个“hello world”应用程序并查看它是否能够编译是有价值的信息。

【讨论】:

    【解决方案5】:

    也许 VS 会创建 exe,然后在尝试将其移动到最终目的地之前,您的病毒扫描程序会抓取并删除它,或者将其移动到保存位置。

    【讨论】:

      【解决方案6】:

      我有两个发布文件夹:一个在解决方案文件夹中,一个在项目文件夹中。前者包含.exe文件,后者不包含。

      【讨论】:

        【解决方案7】:

        我只是想插话问:您是否从上面的目录中查找过 *.exe 文件名?在我的案例中,我发现它正在写入 /release 子目录正上方的目录。不知道我是怎么错过这个细节的,但我做到了!我想我之前从未想过,因为我看到 buildlog.htm 被写入 /release 子目录,并且目录本身的存在。就我而言,它正在编译、链接等。我只是无法在 /release 子目录中看到 *.exe。

        【讨论】:

          【解决方案8】:

          据我所知,您需要在构建之前“全部保存”。

          【讨论】:

            【解决方案9】:

            我遇到了完全相同的问题。只需关闭 Visual Studio 并再次重新打开它(基本上是重新启动它),它应该可以工作了。

            【讨论】:

              【解决方案10】:

              在现在的 VS2016 中,我发现这对我自己来说是随机的。我的解决方法是创建另一个项目并将内容从没有 .exe 的项目复制到新项目。出于某种原因,新的通常会有正确的 .exe 和所需的位置。虽然这不是一个完整的解决方案,但至少它暂时对我有用。

              【讨论】:

                【解决方案11】:

                今天发生在我身上:

                TL;DR;您可能在您的项目中使用了某些 C# 代码,这些代码属于您的项目所针对的 .NET Framework 版本不支持的语言版本

                详情

                我的解决方案中有两个项目。一个项目已经存在。我添加了一个针对 Visual Studio(VS) 2017 类库项目模板支持的最新 .NET Framework v4.6.1 的新项目。我使用了 C# v7.0 中存在的一些 C# 语言特性。在这种情况下,VS 可以编译项目,但无法在bin 目录中创建输出。

                最终我不得不将新项目代码文件合并到现有的针对 .NET Framework v4.5.1 的旧项目中。

                所以我也将现有项目的目标框架版本更改为最新的 .NET Framework v4.6.1。然后旧项目也开始支持我新粘贴的 C# 语言功能。

                【讨论】:

                  【解决方案12】:

                  就我而言,我的网络安全团队发布了一个未宣布的安全更新,阻止我创建任何 .exe 文件。在尝试了这里的所有解决方案(+ 更多)后,我在中午发现了这一点。

                  【讨论】:

                    【解决方案13】:

                    有两条略有不同的路径。我在看这里,它不存在:

                    C:\Users\james\source\repos\CppHelloWorld\Release\CppHelloWorld.exe
                    

                    实际的 exe 在这里 - 请注意路径包含为它构建的 x64 平台:

                    C:\Users\james\source\repos\CppHelloWorld\x64\Release\CppHelloWorld.exe
                    

                    一般来说,路径似乎是:

                    $PROJECT_PATH\$PROJECT_NAME\$PLATFORM\$CONFIGURATION\$PROJECT_NAME.exe
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2012-08-10
                      • 1970-01-01
                      • 2019-05-30
                      • 2023-02-15
                      • 1970-01-01
                      • 1970-01-01
                      • 2019-03-11
                      • 2019-05-08
                      相关资源
                      最近更新 更多