Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: strerror - errno  (Прочитано 4611 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 02-07-2004 15:14 » 

Gospoda,
pomogite pogalujsta razobratjsja.

Situazija sledujushaja :

Код:
#include <errno.h>
extern int errno;

    HINSTANCE hModule=NULL;
    char buf[1000];

   hModule=LoadLibrary("test.dll");
   if (hModule == NULL)
   {
        sprintf(buf, "%s: %s \n", "errno = ", strerror(errno));
   }


W sluchae oshibki w errno dolgno bit kakoe-to znachenie != 0 (w teorii).
na praktike ge errno=0! Я шокирован!
pochemu?
(Woistinu, kogda ti dumaesh, chto ti chto-to znaesh, na dele wijasnjaetsja, chto ti uge nichego ne znaesh    Вот такой я вот )
« Последнее редактирование: 29-11-2007 20:54 от Алексей1153++ » Записан

холоднокровней, Маня, Ви не на работе
darkelf
Опытный

ua
Offline Offline

« Ответ #1 : 02-07-2004 16:52 » 

Для того, чтобы узнать код ошибки LoadLibrary() необходимо вызывать GetLastError(). Сообщение можно вывести через FormatMessage(). Чтото типа:
Код:
  unsigned char buff[512];
  FormatMessage(
    FORMAT_MESSAGE_FROM_SYSTEM,
    NULL,
    GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    (LPTSTR) &buff,
    sizeof(buff),
    NULL
  );
  printf("%s", buff);
« Последнее редактирование: 29-11-2007 20:56 от Алексей1153++ » Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #2 : 02-07-2004 18:18 » 

darkelf,

spasibo za sowet, prosto ja hotela obobshit obrabotku oshibok, inache poluchaetsha, chto dlja kagdogo zaezda - swoj stadion, a hotelos imet obshij  Жаль
U menja w proekte krome wsewozmognih operazij s Dll (w wine i linuxe) eshe swistopljaska s socketami, wot ja i reshila zamenit getlasterror na standartnij strerror, dabi wse bilo odinakowo.  Молчу  pohoge, eto ne udastsja  Жаль  ili est nadegda? Улыбаюсь
Записан

холоднокровней, Маня, Ви не на работе
darkelf
Опытный

ua
Offline Offline

« Ответ #3 : 03-07-2004 13:58 » 

К сожалению, я не знаю нормального решения. Для сокетов, чтобы для меня не было различий, я пользуюсь собственной бибилиотечкой, которая под Windows обеспечивает часть функциональности Linux-версии сокетов: устанавливает errno, вместо вызова WSAGetLastError(), добавляет некоторые коды errno и функции sendmsg()/recvmsg(). Если интересно, могу выслать. Как вариант, под Windows написать собственную функцию strerror().
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 03-07-2004 22:25 » 

Malaja, errno устанавливается функциями из поддержки С Run Time (read, write, etc).  Функции Win32 пользуются GetLastError.

Для переносимости надо писать свои функции доступа к коду ошибки.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #5 : 05-07-2004 06:52 » 

darkelf,

spasibo za pomosh. Esli mogesh - wishli, pogalujsta, budu ochen blagodarna.

npak,
spasibo za informaziju! ja dumala, chto win32 w korne wse rawno ispolzuet standartnie kodi oshibok, t.e. errno mogno ispolzowat narawne s GetLast Error i t.d. Eshe raz spasibo! Отлично
Записан

холоднокровней, Маня, Ви не на работе
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines