Visual Studio编译但exe不存在

时间:2010-07-12 19:12:45

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

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

编辑:正在使用Visual Studio 2008。

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

13 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

我只想插入并询问:您是否从上面的目录中查找了* .exe文件名?我在我的案例中发现的是它正在写入/ release子目录正上方的目录。我不确定我是如何错过这个细节的,但我做到了!我想我之前从未想过这样,因为我看到buildlog.htm被写入/ release子目录,以及目录本身的存在。在我的情况下,它是编译,链接等。我只是无法在/ release子目录中看到* .exe。

答案 4 :(得分:1)

如果完全相同的解决方案适用于其他计算机,那么这是一个环境问题,并且没有多少关注项目,链接器等将解决此问题。环境有什么不同?相同的服务包和QFE是否适用于Studio,还适用于操作系统?处理器(64/32位)有区别吗?你的权限是一样的吗?您是否安装了相同的SDK?

我同意Shahi的意见,只是尝试针对相同的SDK构建一个“hello world”应用程序,看看它是否会编译是有价值的信息。

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

如果您创建一个新的“hello world”WM项目,它是否有效?

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

据我所知,你需要"全部保存"在建设之前。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

今天发生在我身上

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的现有旧项目中。

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

答案 12 :(得分:0)

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