编译包含 Atlcomcli.h 文件的 Visual C++ 2010年项目时出现错误消息


症状


请考虑以下情形:
  • 您有一个包含 Atlcomcli.h 文件的 Microsoft Visual C++ 2010年项目。
  • 指定要在项目中定义的 _CHAR_UNSIGNED 宏 /J 编译器选项。
  • 编译该项目。
在这种情况下,您会收到以下错误消息之一︰
  • 错误 C2338︰ 无法启用 /J 或 _CHAR_UNSIGNED 标记编译 CVarTypeInfo < 字符 >
  • 错误 C2338: CVarTypeInfo < char * > 不能编译启用 /J 或 _CHAR_UNSIGNED 标记
注意:Visual C++ 2010年是 Microsoft Visual Studio 2010 的组成部分。

原因


因为 Atlcomcli.h 文件中的静态断言错误地设置为 CHAR_UNSIGNED 宏,将出现此问题。

解决方案


Visual Studio 2010 Service Pack 1 (SP1) 的分辨率

如果使用 Visual Studio 2010 SP1,请在以下知识库文章中安装此修复程序描述︰
2545588解决︰ 当您运行 Visual C++ 2010年应用程序使用一个单一的值来重置输入迭代器访问冲突

Visual Studio 2010 的解决办法

如果您使用 Visual Studio 2010,安装以下修复程序。

修补程序信息

受支持的修补程序现已从 Microsoft 推出。但是,它被用于纠正本文中描述的问题。它仅应用于正经历此特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。

要立即解决此问题,请联系 Microsoft 客户支持服务,以获取此修复程序。Microsoft 客户支持服务的电话号码以及有关支持费用的信息的完整列表,请访问下面的 Microsoft 网站:注意: 在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能取消的通常情况下收取的电话支持服务费用。照常收取支持费用将应用于其他支持问题和对于特定更新无法解决的问题。

系统必备组件

您必须具有要应用此修补程序的安装的 Visual Studio 2010。

重启要求


不需要重新启动计算机,如果正在使用的 Visual Studio 实例不应用此修复程序之后。

修补程序替换信息


此修补程序不替换任何其他修补程序。

文件信息


此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用
时区
选项卡中
日期和时间
在控制面板中的项。
文件名称文件版本文件大小日期时间平台
Atl100.dll10.0.30319.314158,53628-May-201007:55x64.pdb
Atl100.dll10.0.30319.314385,35228-May-201008:01IA-64
Atl100.dll10.0.30319.314138,05628-May-201008:07x86.pdb
Microsoft_vc100_atl_i64.pdb.msm163,84028-May-201006:57
Microsoft_vc100_atl_x64.pdb.msm87,04028-May-201006:59x64.pdb
Microsoft_vc100_atl_x86.pdb.msm80,89628-May-201007:00x86.pdb
Microsoft_vc100_crt_i64.pdb.msm802,81628-May-201006:57
Microsoft_vc100_crt_x64.pdb.msm568,32028-May-201006:59x64.pdb
Microsoft_vc100_crt_x86.pdb.msm556,54428-May-201007:00x86.pdb
Microsoft_vc100_debugcrt_i64.pdb.msm1,522,17628-May-201006:57
Microsoft_vc100_debugcrt_x64.pdb.msm831,48828-May-201006:58x64.pdb
Microsoft_vc100_debugcrt_x86.pdb.msm784,89628-May-201007:00x86.pdb
Microsoft_vc100_debugmfc_x64.pdb.msm6,876,67228-May-201006:58x64.pdb
Microsoft_vc100_debugmfc_x86.pdb.msm6,240,25628-May-201006:59x86.pdb
Microsoft_vc100_debugopenmp_i64.pdb.msm98,81628-May-201006:57
Microsoft_vc100_debugopenmp_x64.pdb.msm48,12828-May-201006:58x64.pdb
Microsoft_vc100_debugopenmp_x86.pdb.msm48,12828-May-201006:59x86.pdb
Microsoft_vc100_mfc_x64.pdb.msm5,287,93628-May-201006:58x64.pdb
Microsoft_vc100_mfc_x86.pdb.msm4,660,22428-May-201006:59x86.pdb
Microsoft_vc100_mfcloc_x64.pdb.msm135,68028-May-201006:58x64.pdb
Microsoft_vc100_mfcloc_x86.pdb.msm135,68028-May-201006:59x86.pdb
Microsoft_vc100_openmp_i64.pdb.msm6553628-May-201006:57
Microsoft_vc100_openmp_x64.pdb.msm39,42428-May-201006:57x64.pdb
Microsoft_vc100_openmp_x86.pdb.msm37,88828-May-201006:59x86.pdb
Crtversion.h59127-May-201021:11
Atl100.i64.pdb4,018,17627-May-201022:26
Atl100.x64.pdb3,788,80027-May-201022:34x64.pdb
Atl100.x86.pdb3,854,33627-May-201022:36x86.pdb
Mfc100.x64.pdb27,357,18428-May-201000:20x64.pdb
Mfc100.x86.pdb24,162,30428-May-201001:09x86.pdb
Mfc100d.x64.pdb29,995,00828-May-201000:19x64.pdb
Mfc100d.x86.pdb27,619,32828-May-201001:08x86.pdb
Mfc100u.x64.pdb27,504,64028-May-201000:20x64.pdb
Mfc100u.x86.pdb24,350,72028-May-201001:09x86.pdb
Mfc100ud.x64.pdb30,257,15228-May-201000:19x64.pdb
Mfc100ud.x86.pdb27,914,24028-May-201001:08x86.pdb
Mfcm100.x64.pdb3,813,37628-May-201000:20x64.pdb
Mfcm100.x86.pdb3,903,48828-May-201001:11x86.pdb
Mfcm100d.x64.pdb3,944,44828-May-201000:20x64.pdb
Mfcm100d.x86.pdb3,960,83228-May-201001:11x86.pdb
Mfcm100u.x64.pdb3,829,76028-May-201000:20x64.pdb
Mfcm100u.x86.pdb3,919,87228-May-201001:11x86.pdb
Mfcm100ud.x64.pdb3,960,83228-May-201000:20x64.pdb
Mfcm100ud.x86.pdb3,977,21628-May-201001:11x86.pdb
Msvcp100.i64.pdb3,312,64027-May-201022:25
Msvcp100.x64.pdb4,049,92027-May-201022:33x64.pdb
Msvcp100.x86.pdb3,746,81627-May-201022:36x86.pdb
Msvcp100d.i64.pdb3,869,69627-May-201022:25
Msvcp100d.x64.pdb4,959,23227-May-201022:33x64.pdb
Msvcp100d.x86.pdb4,369,40827-May-201022:36x86.pdb
Msvcr100.i64.pdb5,549,05627-May-201022:25
Msvcr100.x64.pdb6,769,66427-May-201022:33x64.pdb
Msvcr100.x86.pdb8,866,81627-May-201022:35x86.pdb
Msvcr100d.i64.pdb6,024,19227-May-201022:25
Msvcr100d.x64.pdb8,375,29627-May-201022:33x64.pdb
Msvcr100d.x86.pdb7,891,96827-May-201022:36x86.pdb
Vcomp100.i64.pdb1,634,30427-May-201023:30
Vcomp100.x64.pdb1,617,92028-May-201000:21x64.pdb
Vcomp100.x86.pdb1,699,84028-May-201001:11x86.pdb
Vcomp100d.i64.pdb1,757,18427-May-201023:30
Vcomp100d.x64.pdb1,757,18428-May-201000:21x64.pdb
Vcomp100d.x86.pdb1,798,14428-May-201001:11x86.pdb
Src.crtversion.h75227-May-201021:54
Atl.lib1440027-May-201022:11x86.pdb
Atl.lib16,17627-May-201022:05x86.pdb
Atl.lib13,46827-May-201022:03x86.pdb
Atlbuild.h57527-May-201021:11
Atlcomcli.h73,91326-May-201020:56
Atlconv.cpp53226-May-201020:56
Atls.lib1,509,80427-May-201022:11x86.pdb
Atls.lib1,413,15827-May-201022:05x86.pdb
Atls.lib1,209,62227-May-201022:03x86.pdb
Atlsd.lib1,836,02227-May-201022:11x86.pdb
Atlsd.lib2,091,82627-May-201022:05x86.pdb
Atlsd.lib1,664,75227-May-201022:03x86.pdb
Libcmt.lib16,845,14627-May-201022:10x86.pdb
Libcmt.lib13,210,11427-May-201022:04IA-64
Libcmt.lib13,210,11427-May-201022:04x86.pdb
Libcmt.lib18,194,11427-May-201022:02x64.pdb
Libcmt.lib18,194,11427-May-201022:02x86.pdb
Libcmtd.lib18,567,76827-May-201022:10x86.pdb
Libcmtd.lib16,919,41827-May-201022:04IA-64
Libcmtd.lib16,919,41827-May-201022:04x86.pdb
Libcmtd.lib21,006,47827-May-201022:02x64.pdb
Libcmtd.lib21,006,47827-May-201022:02x86.pdb
Libcpmt.lib8,104,96427-May-201022:10
Libcpmt1.lib8,449,77027-May-201022:10
Libcpmt1.lib9,938,39227-May-201022:02x64.pdb
Libcpmt1.lib9,400,70627-May-201022:04IA-64
Libcpmt.lib9,477,43627-May-201022:02x64.pdb
Libcpmt.lib8,864,05427-May-201022:04IA-64
Libcpmtd.lib8,846,03827-May-201022:10
Libcpmtd0.lib8,110,11627-May-201022:10
Libcpmtd0.lib10,517,02627-May-201022:02x64.pdb
Libcpmtd0.lib10,134,55027-May-201022:04IA-64
Libcpmtd1.lib8,632,61827-May-201022:10
Libcpmtd1.lib11,331,06227-May-201022:02x64.pdb
Libcpmtd1.lib11,080,72627-May-201022:04IA-64
Libcpmtd.lib11,655,65427-May-201022:02x64.pdb
Libcpmtd.lib11,500,47027-May-201022:04IA-64
Mfc100.lib5,502,92627-May-201023:19x64.pdb
Mfc100.lib5,497,94227-May-201023:47x86.pdb
Mfc100d.lib6,341,27627-May-201023:20x64.pdb
Mfc100d.lib6,327,69027-May-201023:48x86.pdb
Mfc100u.lib6,948,86227-May-201023:21x64.pdb
Mfc100u.lib7,034,80227-May-201023:49x86.pdb
Mfc100ud.lib7,997,37627-May-201023:21x64.pdb
Mfc100ud.lib8,070,92827-May-201023:49x86.pdb
Mfcm100.lib43,10427-May-201023:21x64.pdb
Mfcm100.lib41,05827-May-201023:50x86.pdb
Mfcm100d.lib46,20027-May-201023:21x64.pdb
Mfcm100d.lib44,61627-May-201023:50x86.pdb
Mfcm100u.lib44,56827-May-201023:21x64.pdb
Mfcm100u.lib42,47427-May-201023:50x86.pdb
Mfcm100ud.lib47,66227-May-201023:21x64.pdb
Mfcm100ud.lib46,03627-May-201023:50x86.pdb
Mfcs100.lib1,100,55427-May-201023:16x86.pdb
Mfcs100.lib1,096,07227-May-201023:46x86.pdb
Mfcs100d.lib1,090,29227-May-201023:16x64.pdb
Mfcs100d.lib1,063,42027-May-201023:46x86.pdb
Mfcs100u.lib1,117,89627-May-201023:17x64.pdb
Mfcs100u.lib1,113,41627-May-201023:47x86.pdb
Mfcs100ud.lib1,111,37427-May-201023:16x86.pdb
Mfcs100ud.lib1,083,21027-May-201023:46x86.pdb
Msvcmrt.lib1,716,69627-May-201022:10x86.pdb
Msvcmrt.lib1,917,11427-May-201022:02x64.pdb
Msvcmrt.lib1,917,11427-May-201022:02x86.pdb
Msvcmrt.lib2,088,53027-May-201022:04IA-64
Msvcmrt.lib2,088,53027-May-201022:04x86.pdb
Msvcmrtd.lib1,846,03227-May-201022:11x86.pdb
Msvcmrtd.lib2,067,40227-May-201022:02x64.pdb
Msvcmrtd.lib2,067,40227-May-201022:02x86.pdb
Msvcmrtd.lib2,249,63627-May-201022:04IA-64
Msvcmrtd.lib2,249,63627-May-201022:04x86.pdb
Msvcprt.lib949,24427-May-201022:10x86.pdb
Msvcprt.lib1,151,78227-May-201022:04IA-64
Msvcprt.lib1,151,78227-May-201022:04x86.pdb
Msvcprt.lib964,48427-May-201022:02x64.pdb
Msvcprt.lib964,48427-May-201022:02x86.pdb
Msvcprtd.lib964,37227-May-201022:10x86.pdb
Msvcprtd.lib1,172,96227-May-201022:04IA-64
Msvcprtd.lib1,172,96227-May-201022:04x86.pdb
Msvcprtd.lib980,62627-May-201022:02x64.pdb
Msvcprtd.lib980,62627-May-201022:02x86.pdb
Msvcrt.lib1,379,40427-May-201022:10x86.pdb
Msvcrt.lib1,527,02027-May-201022:04IA-64
Msvcrt.lib1,527,02027-May-201022:04x86.pdb
Msvcrt.lib1,396,18227-May-201022:02x64.pdb
Msvcrt.lib1,396,18227-May-201022:02x86.pdb
Msvcrtd.lib1,400,88227-May-201022:10x86.pdb
Msvcrtd.lib1,580,52827-May-201022:04IA-64
Msvcrtd.lib1,580,52827-May-201022:04x86.pdb
Msvcrtd.lib1,423,13227-May-201022:02x64.pdb
Msvcrtd.lib1,423,13227-May-201022:02x86.pdb
Msvcurt.lib31,719,96027-May-201022:11x86.pdb
Msvcurt.lib32,376,80227-May-201022:02x64.pdb
Msvcurt.lib32,376,80227-May-201022:02x86.pdb
Msvcurt.lib32,617,58027-May-201022:04IA-64
Msvcurt.lib32,617,58027-May-201022:04x86.pdb
Msvcurtd.lib33,912,24027-May-201022:11x86.pdb
Msvcurtd.lib34,532,60427-May-201022:02x64.pdb
Msvcurtd.lib34,532,60427-May-201022:02x86.pdb
Msvcurtd.lib34,813,24427-May-201022:05IA-64
Msvcurtd.lib34,813,24427-May-201022:05x86.pdb
Nafxcw.lib61,602,64427-May-201023:48x86.pdb
Nafxcw.lib73,900,88227-May-201023:20x86.pdb
Nafxcwd.lib57,192,09427-May-201023:48x86.pdb
Nafxcwd.lib72,756,64627-May-201023:19x86.pdb
Ptrustm.dll562,98627-May-201022:04IA-64
Ptrustm.dll562,98627-May-201022:04x86.pdb
Ptrustm.lib424,75627-May-201022:10x86.pdb
Ptrustm.lib475,99827-May-201022:02x64.pdb
Ptrustm.lib475,99827-May-201022:02x86.pdb
Ptrustmd.dll570,62427-May-201022:04IA-64
Ptrustmd.dll570,62427-May-201022:04x86.pdb
Ptrustmd.lib432,07027-May-201022:11x86.pdb
Ptrustmd.lib483,64827-May-201022:02x64.pdb
Ptrustmd.lib483,64827-May-201022:02x86.pdb
Ptrustu.lib322,31427-May-201022:10x86.pdb
Ptrustu.lib333,58227-May-201022:02x64.pdb
Ptrustu.lib333,58227-May-201022:02x86.pdb
Ptrustu.lib391,17627-May-201022:04IA-64
Ptrustu.lib391,17627-May-201022:04x86.pdb
Ptrustud.lib327,93227-May-201022:11x86.pdb
Ptrustud.lib339,31427-May-201022:02x64.pdb
Ptrustud.lib339,31427-May-201022:02x86.pdb
Ptrustud.lib397,44027-May-201022:04IA-64
Ptrustud.lib397,44027-May-201022:04x86.pdb
Uafxcw.lib62,774,67627-May-201023:50x86.pdb
Uafxcw.lib75,017,13227-May-201023:21x86.pdb
Uafxcwd.lib58,910,07827-May-201023:49x86.pdb
Uafxcwd.lib74,402,66227-May-201023:21x86.pdb
Vcomp.lib28,58027-May-201023:54x86.pdb
Vcomp.lib28,00427-May-201023:22x86.pdb
Vcomp.lib33,33427-May-201023:06x86.pdb
Vcompd.dll28,13027-May-201023:22x86.pdb
Vcompd.lib28,68627-May-201023:54x86.pdb
Vcompd.lib33,46227-May-201023:06x86.pdb
Mfc100.dll10.0.30319.3145,493,57628-May-201007:55x64.pdb
Mfc100.dll10.0.30319.3144,342,08828-May-201008:07x86.pdb
Mfc100chs.dll10.0.30319.31436,17628-May-201007:55x64.pdb
Mfc100chs.dll10.0.30319.31436,17628-May-201008:07x86.pdb
Mfc100cht.dll10.0.30319.31436,17628-May-201007:55x64.pdb
Mfc100cht.dll10.0.30319.31436,17628-May-201008:07x86.pdb
Mfc100d.dll10.0.30319.3146,926,16029-May-201022:57x86.pdb
Mfc100d.dll10.0.30319.3148,955,21629-May-201022:57x64.pdb
Mfc100deu.dll10.0.30319.31464,33628-May-201007:55x64.pdb
Mfc100deu.dll10.0.30319.31464,33628-May-201008:07x86.pdb
Mfc100enu.dll10.0.30319.31455,12028-May-201007:55x64.pdb
Mfc100enu.dll10.0.30319.31455,12028-May-201008:07x86.pdb
Mfc100esn.dll10.0.30319.31463,82428-May-201007:55x64.pdb
Mfc100esn.dll10.0.30319.31463,82428-May-201008:07x86.pdb
Mfc100fra.dll10.0.30319.31464,33628-May-201007:55x64.pdb
Mfc100fra.dll10.0.30319.31464,33628-May-201008:07x86.pdb
Mfc100ita.dll10.0.30319.31462,28828-May-201007:55x64.pdb
Mfc100ita.dll10.0.30319.31462,28828-May-201008:07x86.pdb
Mfc100jpn.dll10.0.30319.31443,85628-May-201007:55x64.pdb
Mfc100jpn.dll10.0.30319.31443,85628-May-201008:07x86.pdb
Mfc100kor.dll10.0.30319.31443,34428-May-201007:55x64.pdb
Mfc100kor.dll10.0.30319.31443,34428-May-201008:07x86.pdb
Mfc100rus.dll10.0.30319.31460,75228-May-201007:55x64.pdb
Mfc100rus.dll10.0.30319.31460,75228-May-201008:07x86.pdb
Mfc100u.dll10.0.30319.3145,522,76828-May-201007:55x64.pdb
Mfc100u.dll10.0.30319.3144,368,72028-May-201008:07x86.pdb
Mfc100ud.dll10.0.30319.3146,994,25629-May-201022:57x86.pdb
Mfc100ud.dll10.0.30319.3149,030,99229-May-201022:57x64.pdb
Mfcm100.dll10.0.30319.31491,47228-May-201007:55x64.pdb
Mfcm100.dll10.0.30319.31480,20828-May-201008:07x86.pdb
Mfcm100d.dll10.0.30319.314103,24829-May-201022:57x86.pdb
Mfcm100d.dll10.0.30319.314118,60829-May-201022:57x64.pdb
Mfcm100u.dll10.0.30319.31491,47228-May-201007:55x64.pdb
Mfcm100u.dll10.0.30319.31480,72028-May-201008:07x86.pdb
Mfcm100ud.dll10.0.30319.314104,78429-May-201022:57x86.pdb
Mfcm100ud.dll10.0.30319.314120,14429-May-201022:57x64.pdb
Mfcmifc80u.dll10.0.30319.31413,13629-May-201022:57x86.pdb
Msvcp100.dll10.0.30319.314608,08028-May-201007:55x64.pdb
Msvcp100.dll10.0.30319.314966,48028-May-201008:01IA-64
Msvcp100.dll10.0.30319.314421,20028-May-201008:07x86.pdb
Msvcp100d.dll10.0.30319.3141,014,09629-May-201022:57x64.pdb
Msvcp100d.dll10.0.30319.3141,978,70429-May-201022:57IA-64
Msvcp100d.dll10.0.30319.314743,24829-May-201022:57x86.pdb
Msvcr100.dll10.0.30319.314827,72828-May-201007:55x64.pdb
Msvcr100.dll10.0.30319.3141,499,47228-May-201008:01IA-64
Msvcr100.dll10.0.30319.314770,38428-May-201008:07x86.pdb
Msvcr100d.dll10.0.30319.3141,498,96029-May-201022:57x86.pdb
Msvcr100d.dll10.0.30319.3141,858,89629-May-201022:57x64.pdb
Msvcr100d.dll10.0.30319.3143,764,04829-May-201022:57IA-64
Vcomp100.dll10.0.30319.31457,16828-May-201007:55x64.pdb
Vcomp100.dll10.0.30319.314143,18428-May-201008:01IA-64
Vcomp100.dll10.0.30319.31451,02428-May-201008:07x86.pdb
Vcomp100d.dll10.0.30319.314106,83229-May-201022:57x64.pdb
Vcomp100d.dll10.0.30319.314316,75229-May-201022:57IA-64
Vcomp100d.dll10.0.30319.31487,88829-May-201022:57x86.pdb
Vcomp100ui.dll10.0.30319.31410,06429-May-201022:57x86.pdb
Vcomp100ui.dll10.0.30319.31410,57629-May-201022:57x86.pdb
Vcomp100ui.dll10.0.30319.31411,60029-May-201022:57x86.pdb
Vcomp100ui.dll10.0.30319.3149,55229-May-201022:57x86.pdb
Vcredist_ia64.exe10.0.30319.3143,117,40029-May-201001:40x86.pdb
Vcredist_x64.pdb.exe10.0.30319.31410,274,13629-May-201001:34x86.pdb
Vcredist_x86.pdb.exe10.0.30319.3149,033,04829-May-201001:46x86.pdb

解决方法


要变通解决此问题,请按照下列杂注指令,使之包含 Atlcomcli.h 文件︰
#pragma push_macro("ATLSTATIC_ASSERT")#undef ATLSTATIC_ASSERT
#define ATLSTATIC_ASSERT(x,y)
#include <atlcomcli.h>
#undef ATLSTATIC_ASSERT
#pragma pop_macro("ATLSTATIC_ASSERT")

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。