Вопрос № 20993: Здравствуйте уважаемые эксперты!
Я компилирую C/C++ исходники GCC (из Cygwin'a). Но gcc создаёт такой exe-шник, что тот требует библиотеку Cygwin1.dll. Слышал, что существует специальный ключ компиляции, который освобождает от dll-ки.
Подска...Вопрос № 21009: Уважаемые эксперты, помогите пожайлуста решить вопрос.
Мне необходимо получить текстовое сообщене о описании ошибки.
Есть следующее:
char *pcCommPort = "COM1";
hKeithly = CreateFile(pcCommPort,
GENERIC_READ|GENERIC_WR...
Вопрос № 20993
Здравствуйте уважаемые эксперты!
Я компилирую C/C++ исходники GCC (из Cygwin'a). Но gcc создаёт такой exe-шник, что тот требует библиотеку Cygwin1.dll. Слышал, что существует специальный ключ компиляции, который освобождает от dll-ки.
Подскажите, пожалйста какой именно ключ.
Отправлен: 17.05.2005, 18:09
Вопрос задал: And1 (статус: 2-ой класс)
Всего ответов отправлено: 1
Отвечает: Jadd
Здравствуйте, And1!
Поищи в хелпе к gcc от цыгвина. Или в самом Cygwin хелпе почитай. Либо получи распечатку всех ключей.
Ответ отправил: Jadd (статус: 4-ый класс)
Отправлен: 17.05.2005, 22:39 Оценка за ответ: 3
Вопрос № 21009
Уважаемые эксперты, помогите пожайлуста решить вопрос.
Мне необходимо получить текстовое сообщене о описании ошибки.
Есть следующее:
char *pcCommPort = "COM1";
hKeithly = CreateFile(pcCommPort,
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
//////Проверка на ошибки///////////////////////////////////
if (hKeithly == INVALID_HANDLE_VALUE)
{
// Handle the error.
LPVOID lpMsgBuf=NULL;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(), //Тут получаю 2
0, // Default language
Пробую как /*MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US)*/
не показывает вообще ничего
(LPTSTR) &lpMsgBuf,
0,
NULL
);
cout << "CreateFile failed with error "<
return 0;
}
в итоге 0х00133018. Читал Рихтера но у него через WinAPI, а мне надо именно в консоли.
Отправлен: 18.05.2005, 00:42
Вопрос задал: Malish (статус: Студент)
Всего ответов отправлено: 2
Отвечает: DSota
Здравствуйте, Malish!
Текст в приложении отличается от вашего только параметрами функцией MAKELANGID, подставленной вместо нуля (она тоже создает язык по умолчанию), и минимально возможная память, выделенная ответу равна 1024 байта (у вас стоит 0)...
При использовании FORMAT_MESSAGE_ALLOCATE_BUFFER, ее нужно удалять (в этом случае необязательно)...
Приложение:
Ответ отправил: DSota (статус: Студент)
Отправлен: 18.05.2005, 09:25 Оценка за ответ: 5 Комментарий оценки: Спасибо!!! Я перекодировал в DOS русский язык, и теперь все ОК!!!
Отвечает: Raptor1
Здравствуйте, Malish!
Попробуй так, работает не первый год
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
if(m_bReportError)
MessageBox(NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONERROR );
LocalFree( lpMsgBuf );
Ответ отправил: Raptor1 (статус: 4-ый класс)
Отправлен: 21.05.2005, 07:12