VS2005 和 VS2008 C++ 的连续构建;项目导致LNK1104错误

发布于 2024-08-29 13:28:15 字数 640 浏览 3 评论 0原文

我在同一台机器上安装了VS2005和VS2008。我还有一个使用 '05 和 '08 构建的通用代码库。为此,我有 2 个 VC 项目。一个名为 XYZ_2008.vcproj 的 '08 项目和一个名为 XYZ_2005.vcproj 的 '05 项目,以及相应的 2 个 sln 。这两个项目都将 dll、lib 和 pdb 输出到同一输出目录(均带有适当的 _2005 和 _2008 后缀)。

假设我是从干净的状态开始,我首先在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 文件。

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

提前致谢!

I have VS2005 and VS2008 installed on the same machine. I also have a common codebase that I build using both '05 and '08. For this purpose, I have 2 VC projects.. A '08 project called XYZ_2008.vcproj and a '05 project called XYZ_2005.vcproj, and the corresponding 2 slns as well. Both projects output dlls, libs and pdbs to the same output directory (all with appropriate _2005 and _2008 suffixes).

Assuming that I am starting from a clean state, I first open XYZ_2005.sln (containing XYZ_2005.vcproj) in VS2005 and build it successfully. Then I close VS2005.

Next, I open XYZ_2008.sln (containing XYZ_2008.vcproj) and build (not rebuild) it. At this point, I get an error saying:

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

If now I rebuild the '08 solution, the error goes away and the build succeeds. The build also succeeds if I directly do a rebuild instead of a build for the '08 sln.

In spite of everything being separate, the VS08 build seems to be picking up a MFC8 file (from VS05) instead of a MFC9 file.

Can somebody please help out with this issue?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

醉态萌生 2024-09-05 13:28:15

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

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

Maybe the link dependency is stored in a build .obj file. VS2008 does not "see" the need for rebuilding it, since neither its source nor its build options are altered. When linking the old dependency is used and the linking fails.

I think its a bad idea to mix up 2 VS Builds. If you need both Solutions, you should always do a rebuild when changing from one to the other solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文