我在一个解决方案中创建了两个项目,一个名为vm的静态库和一个名为vmx的控制台应用程序。我使用框架和引用的新方法来创建vm对vmx的依赖性。我还为这两个项目添加了x64平台。
现在,当我选择Rebuild Solution时,我得到了这个输出:
1>------ Rebuild All started: Project: vm, Configuration: Debug Win32 ------
1> vm.c
1> vm.vcxproj -> D:\Shared\Dynos\Build\Visual Studio 2010\Solutions\..\..\..\Lib\Win32\Debug\vm.lib
2>------ Rebuild All started: Project: vmx, Configuration: Debug Win32 ------
2> main.c
2>LINK : fatal error LNK1104: cannot open file 'D:\Shared\Dynos\Lib\Win32\Debug\vm.lib'
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
就好像在编译vmx之前构建vm.lib一样。
如果我选择Clean Solution,然后选择Build Solution,我会得到这个输出:
1>------ Build started: Project: vm, Configuration: Debug Win32 ------
1> vm.c
1> vm.vcxproj -> D:\Shared\Dynos\Build\Visual Studio 2010\Solutions\..\..\..\Lib\Win32\Debug\vm.lib
2>------ Build started: Project: vmx, Configuration: Debug Win32 ------
2> main.c
2> vmx.vcxproj -> D:\Shared\Dynos\Build\Visual Studio 2010\Solutions\..\..\..\Lib\Win32\Debug\vmx.exe
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
一切都好。
有人可以向我解释这里发生了什么吗?
由于
答案 0 :(得分:4)
我最近也遇到了这个问题,经过多次敲击后,我意识到输出目录在几个项目中是相同的。所以项目A可以很好地重建,但是当项目B“重建”时,它会清除输出目录,包括projectA的.lib和.dll文件,后续项目重建将失败。
我们对自动构建的修复是为了清理,然后构建解决方案,而不是进行重建或清理/重建。显然,替代方案是将项目更改为每个都有自己的输出目录。
希望能帮助别人!
答案 1 :(得分:2)
我找到了解决问题的方法。解决方案是不在项目设置中使用框架和引用功能,并且只使用旧的Project Dependencies系统。我删除了我的引用并单击了Project Dependencies对话框中的复选框,现在一切正常。怪异!
我认为框架和参考仅适用于C#项目,对于C ++项目应该避免使用。
答案 2 :(得分:0)
1)可能是依赖问题
OR
2)在重建期间可能会保留一些旧的中间文件 在清洁期间被删除在新建期间被新的,正确的替换。
答案 3 :(得分:0)
对我来说,这是在下一个项目构建之前已经清理过的中间目录。这真的很令人困惑,因为我不知道究竟将分离到该目录中的是什么,我的解决方案和项目文件都在目录中
如果解决方案文件* .sln和引用的项目文件* .vcxproj都在一个目录中,则将
$(TargetName)\
添加到ProjectProperties > ConfigurationProperties > General > Intermediate Directory
的值。 这对我来说是必需的,因为我也在其他解决方案中使用该项目。