не удается преобразовать параметр 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);
перейдите к свойствам для вашего проекта и в разделе свойства конфигурации / общие измените набор символов на "не установлен". Таким образом, компилятор не будет предполагать, что вы хотите символы Юникода, которые выбраны по умолчанию:
это основная функция, которую Visual Studio создает по умолчанию:
int _tmain(int argc, _TCHAR* argv[])
где _TCHAR определяется как char или wchar_t в зависимости от того, определен _UNICODE или нет. То же самое происходит с функциями API. Я бы посоветовал вам не использовать явную CreateFileA. Измените main и используйте CreateFile.
в зависимости от настроек компилятора для набор символов, вам может потребоваться выполнить многобайтовое / widechar преобразование или изменить набор символов, если вам все равно, что это такое.
для преобразования с MultiByteToWideChar см. Следующее...
Я думаю, вы компилируете с включенным Unicode. Тогда с char argv[]
, argv
это char
массив, so argv[1]
- это char
и CreateFile
хочет const wchar_t*
в качестве первого параметра, а не char
.
что сказал, ваш main
определение также нарушено, оно должно иметь char* argv[]
. С этим изменением, вы можете позвонить CreateFileA
.