0

这个 Mono 库只是让人头疼......我从这个国际化教程创建了简单的 C# 控制台应用程序 它在使用 Mono 构建它时工作,但我想使用 Visual Studio 构建/运行它。我将Mono.Posixnuget添加到项目中。

程序如下所示:

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