4

libintl.h の 440 行目で、最終的な make に macports チョークを使用して gtk 1.2 (パッケージ名 gtk1) をインストールします。

extern locale_t libintl_newlocale (junk, stuff, stuff)

コンパイラは locale_t を見つけることができません。

このファイルは、存在しない locale.h と、この型を定義していない xlocale.h をインポートします。

locale_t はどこで定義する必要がありますか? これは、依存関係の欠落と同じくらい簡単かもしれませんが、何が欠落しているのかわかりません。

リクエストにより、Open Group の著作権を除いた 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 */
4

2 に答える 2

1

Mac OS X でも同じ問題が発生しました。インクルード ガードとして と を使用した<xlocale.h>こと<X11/Xlocale.h>が原因でした。_XLOCALE_H_何かに両方が含まれている場合、実際に含まれるのはそのうちの 1 つだけです。この問題を解決するために/usr/include/X11/Xlocale.h、インクルード ガードを編集して に変更しました_X11_XLOCALE_H_

この問題はアップストリームで修正されましたが、修正はまだ Mac OS X に反映されていません。

于 2011-04-17T23:48:51.683 に答える
1

英語以外の言語に翻訳されたメッセージが必要ない場合はlibintl、ドロップインの代替品として機能するさまざまなダミー バージョンを見つけることができます。私の記憶が正しければ、uclibc には 1 つ含まれています。また、どこかに追加typedef void *locale_t;してバグを回避することもできます。

..これはバグです。locale_tは POSIX 2008 まで POSIX に追加されませんでした。これは よりかなり新しいものlibgtk1.2です。それまでは GNU 拡張でした。いずれにせよ、これは非常に新しく、広くサポートされていない機能であるため、configure はそれをテストし、存在する場合にのみ使用する必要があります。

于 2010-07-02T11:03:17.540 に答える