【问题标题】:VS2005 nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argvVS2005 nafxcw.lib(appcore.obj):错误 LNK2001:无法解析的外部符号 ___argv
【发布时间】:2012-04-17 23:41:33
【问题描述】:

我在构建具有静态库输入 (.lib) 的项目时收到此错误。问题是我可以在调试中成功运行项目,但在发布模式下无法运行。它显示错误为....

nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc

请帮我解决这个问题。

【问题讨论】:

  • 无法运行还是无法构建?
  • 可能与调试与发布中的项目设置有关。打开项目 --> 设置菜单并比较两个设置。特别注意Linker下的设置。

标签: mfc release-mode


【解决方案1】:

Microsoft's KB Q166504 可能会给你答案:

在构建 MFC 应用程序或 DLL 时,您需要确保所有 相关库已同步:

  • 如果您选择在共享库中使用 MFC 构建应用程序,那么您还必须使用 C 的动态版本 运行时 (MSVCRT.DLL)。
  • 如果您选择构建调试 MFC 应用程序,那么您还必须使用 C 运行时的调试版本。同样,释放 MFC 应用程序必须使用 C 运行时的非调试版本。
  • 如果您的调试 MFC 应用程序使用扩展 DLL,则每个扩展 DLL 也必须是调试版本。同样,发布应用程序必须匹配 发布扩展 DLL。 C 运行时库的类型是固定的。 扩展 DLL 和使用它们的应用程序都必须使用 MFC 共享库,它需要 C 的动态 DLL 版本 运行时。
  • 如果您要链接到也链接到 MFC 或 CRT 的任何静态库,则应确保每个静态库共享 相同的属性(调试/发布,CRT-静态/动态) 申请。

分辨率

更改应用程序使用的 C 运行时库的类型或 DLL,转到构建/项目设置属性表并切换到 C/C++ 选项卡。在 C/C++ 页面上,选择“代码生成”类别。 更改“使用运行时库”列表框的值。小心支付 注意针对每个配置进行具体说明;只有一个 配置,如“Win32 (80x86) Debug”,应选择 你改变这个值。

  • 调试、共享库 MFC 应用程序 - “调试多线程 Dll。”

  • 发布、共享库 MFC 应用程序 - “多线程 Dll”。

  • 调试、静态库 MFC 应用程序 - “调试多线程”。

  • 发布静态库 MFC 应用程序 - “多线程”。

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 2011-05-06
    • 1970-01-01
    • 2011-09-29
    • 2013-09-11
    • 2022-01-07
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多