не удается преобразовать параметр 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");

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

5 ответов


Он должен быть!--3-->

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

и

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

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

alt text


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

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

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


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

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

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


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

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