Visual Studio 编译,但 exe 不存在

Posted

技术标签:

【中文标题】Visual Studio 编译,但 exe 不存在【英文标题】:Visual Studio compiles but the exe isn't there 【发布时间】: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 版本。也许它会有所作为。 【参考方案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

【讨论】:

以上是关于Visual Studio 编译,但 exe 不存在的主要内容,如果未能解决你的问题,请参考以下文章

如何只用visual c++编译器而不安装visual studio

在 Visual Studio 中通过 C# 类编译 C++ 代码

从PowerShell设置Visual Studio环境变量

编译时自动增加exe版本,Visual Studio

Visual Studio 2010中的Visual C++如何编译、连接和运行?

为啥 cl.exe(Visual Studio 编译器)无法使用 CMake(错误报告)编译项目?