7

スクリプト/ai/Dream.boo

import CultLib
import LonelyHero

class Dream(Enemy):
    pass

C#

var bc = new BooCompiler();
bc.Parameters.Input.Add(new FileInput("rsc/script/ai/" + "Dream" + ".boo"));
bc.Parameters.Pipeline = new CompileToMemory();
bc.Parameters.References.Add(Assembly.GetExecutingAssembly());
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("CultLib.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-audio-2.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-graphics-2.dll").FullName));
bc.Parameters.References.Add(Assembly.LoadFile(new DirectoryInfo("sfmlnet-window-2.dll").FullName));

var cc = bc.Run();

if(cc.GeneratedAssembly!=null)
{
    cc.GeneratedAssembly.CreateInstance("Dream", true, BindingFlags.NonPublic, null,
                                        new object[] {Parent, pos}, null, null);
}
else
{
    foreach (var error in cc.Errors)
        Console.WriteLine(error);
}

この行bc.Parameters.References.Add(Assembly.GetExecutingAssembly());に、名前空間「LonelyHero」を含む実行アセンブリを追加します。ただし、エラー

rsc/script/ai/Dream.boo(2, 8): BCE0021: 名前空間 LonelyHero が見つかりません。アセンブリ参照を追加するのを忘れたのでしょうか。

が表示されます。

LonelyHero は存在するはずですが、なぜこのエラーが発生するのでしょうか?また、解決するにはどうすればよいでしょうか?

注: に置き換えるAssembly.GetExecutingAssmebly()Assembly.GetAssembly(typeof(Enemy))、LonelyHero 名前空間の下のクラスを使用してアセンブリが確実に追加されるため、同じエラーが発生します。また、Assembly.LoadFile(new DirectoryInfo("LonelyHero.exe").FullName)

Boo 0.9.4.9 および booxw-1203 で発生

4

2 に答える 2

3

インポートを成功させるには、BOO にインポートされた名前空間に少なくとも 1 つのパブリック型が含まれている必要があります。そうしないとBCE0021エラーが発生するため、Enemy タイプが public (または別のタイプ) であることを確認する必要があります。

于 2013-01-02T10:38:26.183 に答える
1

Boo や C# についてはわかりませんが、Boo Programming Google Group で同様の質問をしている人を見つけました。彼らが尋ねていた質問:

「名前空間 'Pathfinding' が見つかりません。アセンブリ参照を追加するのを忘れたのかもしれません?」

具体的には、次のエラーが発生していました。

C# から持っていた既存のコードを Boo に変換しています。私のクラスの1つに、スクリプトコンバーターによって「パスファインディングのインポート」に変換された「パスファインディングの使用」がありました。

コンパイルしようとすると、次のエラーが発生します。

Assets/Script/VehicleController.boo(4,8): BCE0021: Namespace 'Pathfinding' が見つかりません。アセンブリ参照を追加するのを忘れたのでしょうか?

私が使用しているパスファインディング ライブラリは C# で記述されています。これにより問題が発生する可能性はありますか? これを機能させるために他に何かする必要がありますか?

これはあなたのエラーメッセージのように見えました.誰かが言及した解決策は、他の言語で書かれたスクリプトからアクセスできるようにするために、スクリプトをコンパイルフェーズに入れる必要があるということでした.

このURL は、スクリプトのコンパイルに関する詳細情報のリファレンス/ソースとして引用されました。

于 2013-01-01T14:58:09.950 に答える