2015-08-04 2 views
0

Я пытаюсь создать поле со списком в Win32, следуя этому msdn tutorial.wcscpy_s не работает для Win32 Combo Box

Когда я реализую шаг 2 и попытаться собрать, я получаю следующее сообщение об ошибке:

error: 'wcscpy_s' was not declared in this scope 
wcscpy_s(A, sizeof(A)/sizeof(TCHAR), (TCHAR*)Planets[k]); 

Я включил следующие файлы заголовков, в надежде решить эту проблему:

#include <string.h> 
#include <wchar.h> 
#include <windows.h> 
#include <CommCtrl.h> 
#include <math.h> 
#include <objbase.h> 

Может кто-то помогает мне понять, почему я получаю эту ошибку? Заранее спасибо.

+1

если вы используете 'SizeOf (A)/SizeOf (TCHAR)', вероятно, вы должны использовать '_tcscpy_s'. – wimh

+0

Я не могу воспроизвести вашу ошибку: он отлично компилирует MSVC2013 с проектом Win32. Даже если я откажу от стандартных символов VS (UNICODE, WIN32, ...), я не получаю ту же ошибку, что и вы (но ошибка жалобы C2664: 'errno_t wcscpy_s (wchar_t *, rsize_t, const wchar_t *)' *). Можете ли вы рассказать, какой компилятор, версия и параметры вы задали? – Christophe

+0

Я использую mingw. * CFLAGS: = -g -Wall -std = C++ 11 -Wl, - stack, 20971520 -DLIBARCHIVE_STATIC * ...... * SETUPFLAGS: = -g -std = C++ 1 * .... . * LDFLAGS: = -s -lwinmm -lgdi32 -lcomctl32 -Wl, - подсистема, windows -Wl, - stack, 20971520 -static -static-libgcc -static-libstdC++ * – Astartes

ответ

0

От cpp-reference

As with all bounds-checked functions, wcscpy_s is only guaranteed to be available if STDC_LIB_EXT1 is defined by the implementation and if the user defines STDC_WANT_LIB_EXT1 to the integer constant 1 before including wchar.h.

+0

Я добавил #define STDC_WANT_LIB_EXT1 \t \t \t \t 1 и #define STDC_LIB_EXT1 \t \t \t \t перед включением wchar.h. Я получаю ту же ошибку. – Astartes

+1

В нем говорится, что реализация должна определять STDC_LIB_EXT1, а не пользователя (вас). – jensa

+0

Основываясь на том, что вы видите в учебнике, есть ли альтернатива, которую я могу использовать? – Astartes