не может преобразовать параметр 1 из «CHAR» на «LPCWSTR»
-
29-09-2019 - |
Вопрос
Я продолжаю получать эту ошибку: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, которые выбраны по умолчанию:
Это главная функция, которую визуальная студия создает по умолчанию:
int _tmain(int argc, _TCHAR* argv[])
Где _tchar определен для Char или WCRA_T в зависимости от того, определяется ли _Unicode или нет. То же самое происходит с функциями API. Я бы посоветовал вам с помощью явного createfilea. Измените свой главный и используйте CreateFile.
В зависимости от вашего настройки компилятора для Набор символов, вам может потребоваться выполнить преобразование Multibyse / WideChar или изменить символы, если вам все равно, что это такое.
Для преобразования с MultibytetowideChar см. Следующее ...
Я думаю, вы компилируете с включенным Unicode. Тогда с char argv[]
, argv
это char
Массив, так argv[1]
это char
, и CreateFile
хочет А. const wchar_t*
Как первый параметр, не char
.
Что сказал, ваш main
определение также сломано, он должен иметь char* argv[]
. Отказ С этим изменением вы можете позвонить CreateFileA
.