4

在 libintl.h 第 440 行中安装带有 macports 扼流圈的 gtk 1.2(包名 gtk1)。

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 */
4

2 回答 2

1

如果您不需要将消息翻译成英语以外的其他语言,您可以找到各种虚拟版本libintl作为替代版本。如果我没记错的话,uclibc 包括一个。您也可以在typedef void *locale_t;某处添加并解决该错误。

..这是一个错误locale_t直到 POSIX 2008 才被添加到 POSIX,这比libgtk1.2;更新一些。在那之前,它是一个 GNU 扩展。无论如何,由于它是一个非常新且未被广泛支持的功能,因此 configure 应该对其进行测试,并且只有在它存在时才使用它。

于 2010-07-02T11:03:17.540 回答
1

我在 Mac OS X 上遇到了同样的问题。它是由两者引起的,并且<xlocale.h>用作包含防护。如果某些东西同时包含两者,那么实际上只有其中一个被包含在内。为了解决这个问题,我编辑了包含保护并将其更改为.<X11/Xlocale.h>_XLOCALE_H_/usr/include/X11/Xlocale.h_X11_XLOCALE_H_

此问题已在上游修复,但尚未修复到 Mac OS X。

于 2011-04-17T23:48:51.683 回答