Название: [Решено]Не получается запустить приложение
Отправлено: merke от Декабрь 26, 2010, 15:35
В общем решил написать pipe клиент/сервер на WinApi. Нашел простой исходник, на MVS C++ компилится и запускается без проблем, а вот на Qt выдается ошибка: cannot convert 'CHAR*' to 'const WCHAR*' for argument '1' to 'void* CreateNamedPipeW(const WCHAR*, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, _SECURITY_ATTRIBUTES*)' вот сам код: C++ (Qt) // ================================================== // Приложение PIPES (серверное приложение) // Демонстрация использования каналов Pipe // для передачи данных между процессами // // (С) Фролов А.В., 1996 // Email: frolov@glas.apc.org // ================================================== #include <windows.h> #include <stdio.h> #include <conio.h> int main() { // Флаг успешного создания канала BOOL fConnected; // Идентификатор канала Pipe HANDLE hNamedPipe; // Имя создаваемого канала Pipe LPSTR lpszPipeName = "\\\\.\\pipe\\$MyPipe$"; // Буфер для передачи данных через канал char szBuf[512]; // Количество байт данных, принятых через канал DWORD cbRead; // Количество байт данных, переданных через канал DWORD cbWritten; printf("Named pipe server demo\n" "(C) A. Frolov, 1996, Email: frolov@glas.apc.org\n"); // Создаем канал Pipe, имеющий имя lpszPipeName hNamedPipe = CreateNamedPipe( lpszPipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 512, 512, 5000, NULL); // Если возникла ошибка, выводим ее код и зваершаем // работу приложения if(hNamedPipe == INVALID_HANDLE_VALUE) { fprintf(stdout,"CreateNamedPipe: Error %ld\n", GetLastError()); getch(); return 0; } // Выводим сообщение о начале процесса создания канала fprintf(stdout,"Waiting for connect...\n"); // Ожидаем соединения со стороны клиента fConnected = ConnectNamedPipe(hNamedPipe, NULL); // При возникновении ошибки выводим ее код if(!fConnected) { switch(GetLastError()) { case ERROR_NO_DATA: fprintf(stdout,"ConnectNamedPipe: ERROR_NO_DATA"); getch(); CloseHandle(hNamedPipe); return 0; break; case ERROR_PIPE_CONNECTED: fprintf(stdout, "ConnectNamedPipe: ERROR_PIPE_CONNECTED"); getch(); CloseHandle(hNamedPipe); return 0; break; case ERROR_PIPE_LISTENING: fprintf(stdout, "ConnectNamedPipe: ERROR_PIPE_LISTENING"); getch(); CloseHandle(hNamedPipe); return 0; break; case ERROR_CALL_NOT_IMPLEMENTED: fprintf(stdout, "ConnectNamedPipe: ERROR_CALL_NOT_IMPLEMENTED"); getch(); CloseHandle(hNamedPipe); return 0; break; default: fprintf(stdout,"ConnectNamedPipe: Error %ld\n", GetLastError()); getch(); CloseHandle(hNamedPipe); return 0; break; } CloseHandle(hNamedPipe); getch(); return 0; } // Выводим сообщение об успешном создании канала fprintf(stdout,"\nConnected. Waiting for command...\n"); // Цикл получения команд через канал while(1) { // Получаем очередную команду через канал Pipe if(ReadFile(hNamedPipe, szBuf, 512, &cbRead, NULL)) { // Посылаем эту команду обратно клиентскому // приложению if(!WriteFile(hNamedPipe, szBuf, strlen(szBuf) + 1, &cbWritten, NULL)) break; // Выводим принятую команду на консоль printf("Received: <%s>\n", szBuf); // Если пришла команда "exit", // завершаем работу приложения if(!strcmp(szBuf, "exit")) break; } else { //fprintf(stdout,"ReadFile: Error %ld\n",330033, GetLastError()); getch(); break; } } CloseHandle(hNamedPipe); return 0; }
не могу понять в чем дело(((
Название: Re: Не получается запустить приложение
Отправлено: UVV от Декабрь 26, 2010, 16:15
Не пиши на winapi
Название: Re: Не получается запустить приложение
Отправлено: merke от Декабрь 26, 2010, 16:17
UVV, огромное тебе спасибо!!! ;D
Ты мне открыл глаза на мир!!! Как же я не мог раньше до этого догодаться!!!
Давайте не будем флудить!
Название: Re: Не получается запустить приложение
Отправлено: merke от Декабрь 26, 2010, 16:41
Название: Re: [Решено]Не получается запустить приложение
Отправлено: brankovic от Декабрь 26, 2010, 18:04
расскажете потом, если глюки интересные будут. Я бы пошёл навстречу компилятору: const WCHAR* lpszPipeName = L"\\\\.\\pipe\\$MyPipe$"; но не особо уверен, WCHAR стороной обходил всегда.
|