2010-04-21 154 views
0

我在同一台机器上安装了VS2005和VS2008。我也有一个共同的代码库,我使用'05和'08构建。为此,我有2个VC项目.. '08项目名为XYZ_2008.vcproj和'05项目名为XYZ_2005.vcproj,以及相应的2个slns。这两个项目都将dll,libs和pdbs输出到同一个输出目录(全部使用_2005和_2008后缀)。连续构建VS2005和VS2008 C++项目导致LNK1104错误

假设我从一个干净的状态开始,我首先在VS2005中打开XYZ_2005.sln(包含XYZ_2005.vcproj)并成功构建它。然后我关闭VS2005。

接下来,我打开XYZ_2008.sln(包含XYZ_2008.vcproj)并构建(不重建)它。在这一点上,我得到一个错误说:

LINK : fatal error LNK1104: cannot open file 'mfc80u.lib' 

如果现在我重建 08年的解决方案,该错误消失和生成成功。如果我直接为'08 sln进行重建而不是构建,构建也会成功。

尽管所有东西都是分开的,但VS08内部似乎正在拾取MFC8文件(来自VS05)而不是MFC9文件。

有人可以帮忙解决这个问题吗?

在此先感谢!

回答

1

也许链接依赖项存储在构建.obj文件中。 VS2008没有“看到”重建它的需要,因为它的源代码和构建选项都没有改变。链接使用旧的依赖关系并且链接失败时。

我认为这是一个糟糕的主意混合2 VS构建。如果您需要两种解决方案,则在从一种解决方案更改为另一种解决方案时,应始终进行重建。

相关问题