Подтвердить что ты не робот

Не может преобразовать параметр 1 из 'char' в 'LPCWSTR'

Я продолжаю получать эту ошибку: 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");

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

4b9b3361

Ответ 1

Это должно быть

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

и

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

Ответ 2

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

alt text

Ответ 3

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

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

Где _TCHAR определяется как char или wchar_t в зависимости от определения _UNICODE или нет. То же самое происходит с функциями API. Я бы посоветовал вам не использовать явный CreateFileA. Измените основное и используйте CreateFile.

Ответ 4

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

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

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

Ответ 5

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

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