Добавление префикса L изменяет строку из массива char
в массив short
. Лучшая альтернатива - обернуть все строки макросом «TEXT», т.е.
TEXT("My string")
Если ваша сборка является сборкой Unicode, все ваши строки становятся массивом short
с, но если нет, они остаются массивом char
с. Windows также предоставляет следующие типы:
LPWSTR = short *
LPTSTR = short *, or char * if UNICODE not defined
LPSTR = char *
Не забывайте, хотя; даже если вы добавили к своим строкам префикс L или добавили TEXT
, вам необходимо убедиться, что вы вызываете нужные функции. Стандартный Windows string API, такой как lstrlen
, автоматически переключается с char *
на short *
, если определено UNICODE
, но вам нужно убедиться, что вы не используете функции, которые используют только char *
.
Функции, которые ваша библиотека экспортирует с использованием строк, также повредят старые приложения, которые используют вашу библиотеку, поскольку эти приложения будут по-прежнему передавать и массив char
с, а не short
с, так что вы, вероятно, захотите работать в там какая-то обратная совместимость.