2012-04-17 393 views
2

当我生成一个具有静态库输入(.lib)的项目时,出现此错误。问题是,我可以在调试成功运行该项目,但不能在发布运行mode.It显示了错误的....VS2005 nafxcw.lib(appcore.obj):error LNK2001:无法解析的外部符号___argv

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

请帮我解决这个问题。

+0

你不能运行它,或者你不能建立它吗? – 2012-04-17 23:43:12

+0

在Debug vs. Release中可能与您的项目设置有关。打开项目 - >设置菜单并比较两个设置。特别注意链接器下的设置。 – bpatrao 2012-04-17 23:46:03

回答

1

Microsoft's KB Q166504会为你提供了答案:

当构建一个MFC应用程序或DLL,你需要确保所有的 相关库是同步的:

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

解决方案

要改变由应用程序或 DLL使用C运行时库的类型,去生成/项目设置属性表,并切换到 C/C++标签。在C/C++页面上,选择“代码生成”类别。 更改“使用运行时库”列表框的值。仔细注意 注意使这个具体为每个配置;只有一个 的配置,比如“Win32(80x86)调试”,应该选择 你改变这个值。

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

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

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

  • 释放静态库MFC应用程序 - “多线程”。

相关问题