VS2005 nafxcw.lib(appcore.obj):错误LNK2001:未解析的外部符号___argv

时间:2012-04-17 23:41:33

标签: mfc release-mode

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

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

请帮我解决这个问题。

1 个答案:

答案 0 :(得分: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,转到Build / Project设置属性表并切换到   C / C ++选项卡。在C / C ++页面上,选择“代码生成”类别。   更改“使用运行时库”列表框的值。小心点   注意使每个配置具体;只有一个   应该选择配置,例如“Win32(80x86)Debug”   你改变了这个值。

     
      
  • 调试,共享库MFC应用程序 - “Debug Multithreaded Dll。”

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

  •   
  • 调试,静态库MFC应用程序 - “Debug Multithreaded。”

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

  •