Ответ 1
Это должно быть
int main(int argc, char* argv[])
и
HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
Я продолжаю получать эту ошибку:
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);
Перейдите в "Свойства вашего проекта" и в разделе "Свойства конфигурации/Общие" измените набор символов на "Не задано". Таким образом, компилятор не предполагает, что вы хотите использовать символы Unicode, которые по умолчанию выбраны:
Это основная функция, которую создает Visual Studio по умолчанию:
int _tmain(int argc, _TCHAR* argv[])
Где _TCHAR определяется как char или wchar_t в зависимости от определения _UNICODE или нет. То же самое происходит с функциями API. Я бы посоветовал вам не использовать явный CreateFileA. Измените основное и используйте CreateFile.
В зависимости от настроек вашего компилятора для CharacterSet вам может потребоваться выполнить многобайтовое/широкоформатное преобразование или изменить CharacterSet, если вам все равно, что это такое.
Для преобразования с MultiByteToWideChar см. следующее...
Я думаю, вы компилируете с включенным Unicode. Затем с char argv[]
, argv
является массивом char
, поэтому argv[1]
является char
, а CreateFile
хочет a const wchar_t*
как первый параметр, а не char
.
Тем не менее, ваше определение main
также нарушено, оно должно иметь char* argv[]
. С этим изменением вы можете вызвать CreateFileA
.