Win CE 7平台上出现错误c2039和错误c2873

时间:2016-04-28 15:29:51

标签: c++ std windows-ce

可以为Win32平台正确编译代码,但对于WinCe平台,它会在调试模式下导致许多错误。错误与头文件cstdio,cstring和cwchar有关。

Microsoft Visual Studio 9.0 \ VC \ ce \ include \ cstdio(82):错误C2039:'_ _s_instead_use_StringCbGetsA_or_StringCchGetsA':不是“全局命名空间”的成员

错误C2873:'_ _s_instead_use_StringCbGetsA_or_StringCchGetsA':符号不能用于使用声明

错误C2873:'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA':符号不能在using声明中使用

ce7 \ include \ cwchar(66):错误C2873:'swprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW':符号不能在using声明中使用

\ include \ armv4i \ stdlib.h(146):错误C2065:'_ malloca':未声明的标识符

2 个答案:

答案 0 :(得分:1)

A后缀通常连接到具有8位和16位unicode版本的ASCII版本的函数(后者通常以W作为后缀)。 Windows CE本身仅支持unicode,因此如果您尝试构建使用ASCII的代码,则可能会遇到问题。在标准C / C ++库中部分实现了ASCII函数,它是最常用的函数和对象,但是您引用的函数和对象可能不存在。 你可以尝试定义UNICODE和_UNICODE来构建" W"该代码的版本,希望它的任何部分都假设1个字符= 1个字节。

答案 1 :(得分:1)

我所做的就是更改包含文件的顺序。我把" winsock2.h"其他头文件后的头文件。而现在我没有得到这些错误。

Before I had:  
#include < winsock2.h >                                                         
#include < vector >                                       
#include < map >       
#include < string >                     

After:  
#include < vector >  
#include < map >  
#include < string >  
#include < winsock2.h >