2017-02-15 20 views
0
BOOL CTestBMPDoc::OnOpenDocument(LPCTSTR lpszPathName) 
{ 
    if (! CDocument::OnOpenDocument(lpszPathName)) 
     return FALSE; 

    m_pvtkBMPReader = vtkBMPReader::New(); 
    m_pvtkBMPReader->SetFileName(lpszPathName); 

    return TRUE; 
} 

Приведенный выше код не компилируется и выдает ошибку C2664 почему.ошибка C2664: 'пустота vtkImageReader2 :: SetFileName (Const символ *)': не удается преобразовать аргумент 1 из 'LPCTSTR' до «сопзЬ полукокса *»

проект
+0

Как говорится в ошибке, вы передаете неправильный тип аргумента функции 'setFileName'. он ожидает 'char *' и вы предоставляете 'LPCTSTR' –

ответ

0

ваш 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, чтобы упростить преобразование строк.

+0

как сделать ручное преобразование? вы можете дать код для меня – Beginner

+0

http://stackoverflow.com/questions/4786292/converting-unicode-strings-and-vice-versa (Google - ваш друг ;-)) – YePhIcK

+0

Я использовал это решение .. но это не работает для меня .. – Beginner

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

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