2010-07-02 1 views
3

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

extern locale_t libintl_newlocale (junk, stuff, stuff) 

компилятор не может найти locale_t, и я не делаю какой-либо лучше.

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

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

По запросу, здесь xlocale.h, минус авторское право, которое является открытой группой.

#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 */ 
+0

можно скопировать здесь xlocale.h Спасибо Alok.Kr. –

ответ

1

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

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

+0

На самом деле я решил эту проблему, используя деинсталляцию gtk2, которую я могу только предположить, очистил мой каталог include какой-то глупости. Я дам вам кредит на этот вопрос, потому что вы указали мне, что это ошибка gtk time warp. Относительная нота, теперь я чувствую себя глупо. –

0

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

Эта проблема была fixed upstream, но исправление пока еще не сделал его до Mac OS X.