当我构建具有静态库输入 (.lib) 的项目时出现此错误。问题是我可以在调试中成功运行项目,但不能在发布模式下运行。它显示错误为...。
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
请帮我解决这个问题。
当我构建具有静态库输入 (.lib) 的项目时出现此错误。问题是我可以在调试中成功运行项目,但不能在发布模式下运行。它显示错误为...。
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
请帮我解决这个问题。
Microsoft 的 KB Q166504可能会为您提供答案:
在构建 MFC 应用程序或 DLL 时,您需要确保所有相关库是同步的:
- 如果您选择在共享库中使用 MFC 构建应用程序,则还必须使用 C 运行时 (MSVCRT.DLL) 的动态版本。
- 如果您选择构建调试 MFC 应用程序,那么您还必须使用 C 运行时的调试版本。同样,发布 MFC 应用程序必须使用 C 运行时的非调试版本。
- 如果您的调试 MFC 应用程序使用扩展 DLL,则每个扩展 DLL 也必须是调试版本。同样,发布应用程序必须匹配发布扩展 DLL。C 运行时库的类型是固定的。扩展 DLL 和使用它们的应用程序都必须使用共享库中的 MFC,这需要 C 运行时的动态 DLL 版本。
- 如果您要链接到也链接到 MFC 或 CRT 的任何静态库,则应确保每个静态库与应用程序共享相同的属性(调试/发布、CRT 静态/动态)。
解析度
要更改应用程序或 DLL 使用的 C 运行时库的类型,请转到构建/项目设置属性表并切换到 C/C++ 选项卡。在 C/C++ 页面上,选择“代码生成”类别。更改“使用运行时库”列表框的值。请注意使每个配置都具有特定性;更改此值时,应仅选择一种配置,例如“Win32 (80x86) 调试”。
调试、共享库 MFC 应用程序 - “调试多线程 Dll”。
发布、共享库 MFC 应用程序——“多线程 Dll”。
调试、静态库 MFC 应用程序 - “调试多线程”。
发布、静态库 MFC 应用程序 - “多线程”。