当我构建一个具有静态库输入(.lib)的项目时,我收到此错误。问题是我可以在调试中成功运行项目,但无法在发布模式下运行。它将错误显示为....
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
请帮我解决这个问题。
答案 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应用程序 - “多线程。”