ваш VC++? настроен как UNICODE поэтому все ссылки на TCHAR
разрешаются в широком символьного типа w_char
. Однако ваш ВТК «s SetFileName()
функция не поддерживает UNICODE таким образом, ошибка компиляции .
Чтобы исправить это, вы должны либо изменить свойства вашего проекта, чтобы использовать ASCII или MBCS (в зависимости от ваших потребностей) или сделать инструкцию для UNICODE ->MBCS (или в ASCII) преобразования.
Ниже приведен пример того, как преобразовать UNICODE в MBCS с использованием системы кодовую:
const size_t fnameLen = 1024;
char * fname[fnameLen];
int converted = WideCharToMultibyte(
CP_ACP
, WC_COMPOSITECHECK | WC_ERR_INVALID_CHARS
, lpszPathName
, -1 // null-terminated string
, fname
, fnameLen
, NULL // or whatever you'd like it to be
, NULL);
m_pvtkBMPReader->SetFileName(fname); // <-- this should work now as it is char*
Пожалуйста, обратите внимание, что я только что записал этот код без компиляции, поэтому ожидать, что вы, возможно, потребуется некоторое настройка до этой сборки и правильная работа.
ATL и MFC предоставляют bunch of convenient macroses, чтобы упростить преобразование строк.
Как говорится в ошибке, вы передаете неправильный тип аргумента функции 'setFileName'. он ожидает 'char *' и вы предоставляете 'LPCTSTR' –