отсутствует locale_t - PullRequest
       39

отсутствует locale_t

3 голосов
/ 02 июля 2010

Установка gtk 1.2 (имя пакета gtk1) с дросселями macports в финальной версии, в libintl.h, строка 440.

extern locale_t libintl_newlocale (junk, stuff, stuff)

Компилятору не удается найти locale_t, и я не делаю никакихлучше.

Файл импортирует locale.h, который не существует, и xlocale.h, который не определяет этот тип.

Где должен быть определен locale_t?Это может быть так же просто, как пропущенная зависимость, но я не знаю, чего не хватает.

По запросу, здесь есть xlocale.h, за вычетом авторских прав, которые принадлежат Open Group.

#include <X11/Xfuncproto.h>
#include <X11/Xosdefs.h>

#ifndef X_LOCALE
#include <locale.h>
#else

#define LC_ALL      0
#define LC_COLLATE  1
#define LC_CTYPE    2
#define LC_MONETARY 3
#define LC_NUMERIC  4
#define LC_TIME     5

_XFUNCPROTOBEGIN
    extern char *_Xsetlocale(
    int /* category */,
    _Xconst char* /* name */
);
_XFUNCPROTOEND

#define setlocale _Xsetlocale

#include <stddef.h>

#endif /* X_LOCALE */

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

У меня была такая же проблема в Mac OS X. Она была вызвана как <xlocale.h>, так и <X11/Xlocale.h> с использованием _XLOCALE_H_ в качестве защиты включения. Если что-то включало оба, только один из них действительно был включен. Чтобы исправить проблему, я отредактировал /usr/include/X11/Xlocale.h и изменил защиту включения на _X11_XLOCALE_H_.

Эта проблема была исправлена ​​в восходящем потоке , но исправление до Mac OS X еще не было сделано.

1 голос
/ 02 июля 2010

Если вам не нужны сообщения, переведенные на другие языки, кроме английского, вы можете найти различные фиктивные версии libintl, которые служат в качестве вставных замен. Если я правильно помню, uclibc включает один. Вы также можете просто добавить typedef void *locale_t; куда-нибудь и обойти ошибку.

.. и это ошибка . locale_t не был добавлен в POSIX до POSIX 2008, что намного новее, чем libgtk1.2; до тех пор это было расширение GNU. И в любом случае, поскольку это очень новая и не очень широко поддерживаемая функция, configure должен тестировать ее и использовать только при ее наличии.

...