静态构建Windows应用程序时出错

| 当我动态链接所有内容时,我有一个可以编译且可以正常运行的应用程序,但是当我想对其进行静态构建时,它将无法编译。 在Visual Studio 2010中,我设置了“在静态库中使用MFC”选项。 当我这样做时,我得到这个错误: 错误1错误LNK2001:无法解析的外部符号_wWinMain @ 16 LIBCMT.lib(wwincrt0.obj) 我尝试将LIBCMT.lib添加为附加库,但这并没有改变任何内容。 关于如何解决此问题的任何想法?     
已邀请:
从消息中,它缺少“ 0”,这对我意味着您的项目的某些部分正在作为应用程序而不是作为库而构建。 尝试完全重建,并确保设置了所有相关选项以构建静态库。我相信
libcmt.lib
应该只链接到最终应用程序,而不是链接到库。     
生成程序时,有编译器标志来设置Unicode / MBCS,多线程/单线程和其他各种设置。如果您用一组标志编译某些源,而用不同标志编译其他源,则经常会出现这样的链接器错误。 检查所有源都使用相同的标志,包括您自己的任何库。 您所说的特定错误是链接程序包括库LIBCMT.lib中的二进制wwincrt0.obj。 wwincrt0.obj指的是函数wWinMain(),链接器不知道在哪里可以找到它。 LIBCMT是LIBC的多线程版本。您将链接到其中一个,但不会两者都链接。 wwincrt0是CRT(C运行时)启动代码的宽版本(UNICODE),它将启动您的代码。 WinMain()是Windows的主要功能,而wWinMain()是WinMain()的宽版本(UNICODE)。 我猜您的某些代码是使用编译器标志/ MT编译的,而某些代码是使用其他标志(/ MTd,/ MD,/ MDd,/ LD或/ LDd)编译的。 我的第二个想法是,有些是用/ DUNICODE编译的,有些是用/ DMBCS编译的。     

要回复问题请先登录注册