0

この Mono ライブラリは頭痛の種です...この国際化チュートリアルからシンプルな C# コンソール アプリを作成しました。 これは mono でビルドすると機能しますが、Visual Studio を使用してビルド/実行したいと考えています。Mono.Posixプロジェクトにナゲットを追加しました。

プログラムは次のようになります。

using System;
using Mono.Unix;
using System.Globalization;
using System.Threading;

    public class i18n
    {
        public static void Main(string[] argv)
        {
            Catalog.Init("lv", "./locale");
            Console.WriteLine(Catalog.GetString("My name is {0}"), "Enzo");
            int i = 20;
            Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
            i = 21;
            Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
            i = 22;
            Console.WriteLine(Catalog.GetPluralString("I'm {0} year old.", "I'm {0} years old.", i), i);
            Console.ReadKey();
        }
    }

MonoPosixHelper.dll最初に、見つからないというエラーが発生しました。追加しました。その後intl.dll、行方不明になりました。追加した。今、私はPInvokeStackImbalance occuredメッセージを受け取ります:

マネージド デバッグ アシスタント 'PInvokeStackImbalance' は、'D:\TESTS\i18n\i18n\bin\x86\Debug\i18n.vshost.exe' で問題を検出しました。

追加情報: PInvoke 関数 'Mono.Posix!Mono.Unix.Catalog::bindtextdomain' の呼び出しにより、スタックのバランスが崩れました。これは、マネージド PInvoke 署名がアンマネージド ターゲット シグネチャと一致しないことが原因である可能性があります。PInvoke シグネチャの呼び出し規約とパラメーターがターゲットのアンマネージド シグネチャと一致することを確認します。

それはすべて、Catalog.Init("lv", "./locale"); 何が間違っている/欠けているのか見当がつかないなどで起こります.

4

0 に答える 0