Вы компилируете приложение с набором символов UNICODE (Настройки проекта -> Параметры конфигурации -> Общие).Заголовочные файлы Windows используют #defines для «сопоставления» имен функций либо с nameA (для многобайтовых строк), либо с nameW (для строк Unicode).
Это означает, что где-то в заголовочном файле будет присутствовать символ #definethis
#define auxDIBImageLoad auxDIBImageLoadW
То есть вы на самом деле не вызываете auxDIBImageLoad
(функция с таким именем отсутствует), вы вызываете auxDIBImageLoadW
.И auxDIBImageLoadW
ожидает Unicode-строку (wchar_t const*
).Вы передаете многобайтовую строку (char const*
).
Вы можете сделать одно из следующих действий:
- изменить свой проект на использование многобайтового набора символов (->настройки проекта)
- явно вызывать многобайтовую версию функции, заменив
auxDIBImageLoad
на auxDIBImageLoadA
- , изменив функцию
LoadBMP
, чтобы она сама принимала строку Unicode - преобразовать строку в Unicode внутри
LoadBMP
Я бы порекомендовал либо изменить LoadBMP
, чтобы принять саму строку Unicode, либо вызвать auxDIBImageLoadA
напрямую (в таком порядке).Изменение настроек проекта может быть в порядке, если он не нарушает много другого кода.Я бы не предложил преобразовать строку, хотя это и не нужно.Вызов auxDIBImageLoadA
напрямую намного проще, и результат тот же.