【问题标题】:mfc42u.dll Error while migrating from VC6 to VS2005从 VC6 迁移到 VS2005 时出现 mfc42u.dll 错误
【发布时间】:2010-08-28 08:37:22
【问题描述】:

我已将我的 VC6 应用程序迁移到 VS2005,我的所有代码都进行了一些更改,并且没有编译错误。 但我收到链接错误 LNK1104。 LINK : 致命错误 LNK1104: 无法打开文件 'mfc42u.lib'

我已经在 Visual Studio 2005 中导入了 VC6 的 dsw,不确定它仍然从哪里引用 mfc42u.lib(我假设它的库是 VC6)。

请指导我如何摆脱这个错误。

【问题讨论】:

  • 嗯... maaan 正在将传统迁移到传统 O.o

标签: c++ visual-c++ visual-studio-2005 linker compilation


【解决方案1】:

这个库是从您的项目设置的链接器部分引用的,特别是“附加库”或类似的东西(不记得确切的设置名称) - 那里列出了需要链接的库。因此,只需将 mfc42u.lib 替换为 mfc8u.lib 或随 VS 发行版一起安装的任何相关版本的 mfc。

【讨论】:

  • 无论如何,您都不需要明确指定 MFC 静态库 - 如果您只是将项目设置为使用 MFC 静态库,它应该会自动选择合适的静态库。我的建议是删除显式引用。
  • 我找不到明确引用 mfc42u.lib 文件的位置,我检查了项目属性中的所有位置。以下是“链接器”/OUT 的“命令行”中的选项:“ReleaseU/HAB.dll”/INCREMENTAL:NO /NOLOGO /DLL /MANIFEST /MANIFESTFILE:“.\ReleaseU\HAB.dll.intermediate.manifest”/ DEF:".\HAB.def" /DELAYLOAD:"OleAcc.dll" /DEBUG /PDB:"ReleaseU/HAB.pdb" /MAP:".\ReleaseU/HAB.map" /SUBSYSTEM:WINDOWS /BASE:"0x6800000 " /IMPLIB:"ReleaseU/HAB.lib" /MACHINE:X86 /ERRORREPORT:PROMPT
  • 它可能不会在项目设置中被引用,而是在stdafx.h(或其中一个包含,afx*.h)中使用#pragma 声明。
【解决方案2】:

可能您的链接器设置不正确。转到项目设置->配置->常规->使用 MFC 库并确保将值设置为“在共享库中使用 MFC”。如果您能够正确构建,则可以将其改回“静态”以使用新库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多