2017-02-15 12 views
1

Итак, я только что начал C++, поэтому я очень новичок в этом, теперь я знаю большинство основных вещей. Тем не менее, я наткнулся на проблему с кодом, который я скопировал из проекта 1 в проект 2, теперь они ИДЕНТИФИКАЦИЯ, за исключением того, что проект 2 содержит «ошибки» ...Основы C++ (тот же код с использованием другого метода (unicode?))

Так почему я начал C++? Работа попросила меня создать Credential Provider, который вы не можете найти в Интернете. BTL ...

В любом случае, я скопировал код в новый проект, и все же у меня есть ошибки, Я скопировал :

StringCchCopyN(pszDomain, lenDomain + 1, pchDomainBegin, lenDomain); 

но проект 1 использует:

STRSAFEAPI StringCchCopyNW(
     _Out_writes_(cchDest) _Always_(_Post_z_) STRSAFE_LPWSTR pszDest, 
     _In_ size_t cchDest, 
     _In_reads_or_z_(cchToCopy) STRSAFE_PCNZWCH pszSrc, 
     _In_ size_t cchToCopy) 

и проект 2 использует:

STRSAFEAPI StringCchCopyNA(
     _Out_writes_(cchDest) _Always_(_Post_z_) STRSAFE_LPSTR pszDest, 
     _In_ size_t cchDest, 
     _In_reads_or_z_(cchToCopy) STRSAFE_PCNZCH pszSrc, 
     _In_ size_t cchToCopy) 

Так почему проект 1 с помощью функции NW и проект 2, используя функцию NA, я сделал некоторое небольшое исследование:

#ifdef UNICODE 
    #pragma region Application Family 
    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) 
     #define StringCchCopyN StringCchCopyNW 
    #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ 
    #pragma endregion 
#else 
    #pragma region Desktop Family 
    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 
     #define StringCchCopyN StringCchCopyNA 
    #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ 
    #pragma endregion 
#endif // !UNICODE 

Но я понятия не имею, почему проект 1 использует UNICODE и проект-не ... Как я уже сказал, проекты ИДЕНТИЧНЫЕ, по крайней мере, это то, что я думаю.

ответ

0

Это потому, что project1 имеет _UNICODE Определить на уровне проекта (проверить свойство проекта). Итак, определите _UNICODE в свойствах project2.

Вот как:

  1. Право проекта нажмите> Свойства
  2. Свойства конфигурации> Общие
  3. По умолчанию Project> Набор символов
  4. Изменить "Использование Multi-Byte Character Set"> «Использование Unicode символов «

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

  • Нет связанных вопросов^_^