не может преобразовать параметр 1 из «CHAR» на «LPCWSTR»

StackOverflow https://stackoverflow.com/questions/3924926

Вопрос

Я продолжаю получать эту ошибку:cannot convert parameter 1 from 'char' to 'LPCWSTR'

int main(int argc, char argv[])    
{

   // open port for I/O
   HANDLE h = CreateFile(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

   if(h == INVALID_HANDLE_VALUE) {
       PrintError("E012_Failed to open port");

Может кто-нибудь помочь?

Это было полезно?

Решение

Должен быть

int main(int argc, char* argv[]) 

И

HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

Другие советы

Перейдите в свойства для вашего проекта и в разделе «Свойства конфигурации» / General, измените набор символов на «Не установить». Таким образом, компилятор не предполагает, что вы хотите, чтобы персонажи Unicode, которые выбраны по умолчанию:

alt text

Это главная функция, которую визуальная студия создает по умолчанию:

int _tmain(int argc, _TCHAR* argv[])

Где _tchar определен для Char или WCRA_T в зависимости от того, определяется ли _Unicode или нет. То же самое происходит с функциями API. Я бы посоветовал вам с помощью явного createfilea. Измените свой главный и используйте CreateFile.

В зависимости от вашего настройки компилятора для Набор символов, вам может потребоваться выполнить преобразование Multibyse / WideChar или изменить символы, если вам все равно, что это такое.

Для преобразования с MultibytetowideChar см. Следующее ...

http://www.codeguru.com/forum/showthread.php?t=231165.

Я думаю, вы компилируете с включенным Unicode. Тогда с char argv[], argv это char Массив, так argv[1] это char, и CreateFile хочет А. const wchar_t* Как первый параметр, не char.

Что сказал, ваш main определение также сломано, он должен иметь char* argv[]. Отказ С этим изменением вы можете позвонить CreateFileA.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top