2016-04-28 8 views
1

Код может быть скомпилирован правильно для платформы Win32, но для платформы WinCe это приводит к множеству ошибок в режиме отладки. Ошибки связаны с файлами заголовков cstdio, cstring и cwchar.ошибка c2039 и ошибка c2873 на платформе Win CE 7

Microsoft Visual Studio 9.0 \ VC \ се \ включать \ cstdio (82): ошибка C2039: '_gets_instead_use_StringCbGetsA_or_StringCchGetsA': не является членом '' глобального пространства имен'»

ошибка C2873: '_gets_instead_use_StringCbGetsA_or_StringCchGetsA': символ не может быть использована в использовании-декларации

ошибка C2873: 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA': символ не может быть использована в использовании-декларации

CE7 \ Include \ cwchar (66): ошибка C2873: 'swprintf_instead_use_StringCbPrintfW_or_StringCchPrintfW': символ не может использоваться в использовании декларирование

\ Include \ ARMV4I \ stdlib.h (146): ошибка C2065: '_malloca': необъявленный идентификатор

ответ

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> 
1

Аналого суффикс обычно подключается к ASCII-версии функций, которые имеют как 8bit и 16-битная версия Unicode (последняя обычно имеет W как суффикс). Windows CE поддерживает только юникод изначально, поэтому, если вы пытаетесь создать код, который использует ASCII, у вас могут возникнуть проблемы. Существует частичная реализация функции ASCII в стандартной библиотеке C/C++, охватывающей наиболее часто используемые функции и объекты, но те, на которые вы ссылаетесь, могут отсутствовать. Вы можете попытаться определить UNICODE и _UNICODE для создания «W» версии этого кода, надеясь, что никакие его части не сделали предположение, что 1 символ = 1 байт.

+0

Thanks @Valter Minute. Но похоже, что я использую те функции библиотеки времени выполнения C, которые доступны для win32, но не для wince. Я получаю вышеупомянутые ошибки в режиме отладки. Когда я перехожу в режим выпуска, я получаю следующую ошибку в файле заголовка cstdio. 1> c: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ ce \ include \ cstdio (64): ошибка C2143: синтаксическая ошибка: отсутствует '{' before ':' она должна что-то делать с пространством имен. #if _GLOBAL_USING _STD_BEGIN using :: _ Filet; – Habib

+0

Не удается ли это сделать с установкой UNICODE? –

+0

Да, я включил UNICODE в определение препроцессора проекта. Но это не помогло. – Habib

Смежные вопросы