0

私はプログラミングと C# を初めて使用します。バトルフィールド 2 サーバーからエラーまたはサーバー クラッシュを検出するプログラムを作成しようとしています。その後、サーバーをシャットダウンし (サーバーがまだダウンしていない場合)、バックアップを開始しますが、私は小さな隆起に遭遇しました。バトルフィールド 2 を再開しようとすると、bf2 から次のエラーが表示されます。

デバッグ アサーションに失敗しました! バージョン 1.0.2446.12 ビルド日:
モジュール: Python
ファイル: c:\dice\Projects\BF2Branches\BF2Demo\Code\BF2\Game\Python\PythonHost.Cpp
行:243

テキスト: bf2 モジュールをインポートできませんでした:

現在の設定:

エラーのパスは存在しません。

アプリケーションを起動するいくつかの異なる方法を調査しましたが、結果はすべて同じです。これらは私がこれまでに試したカップルです:

Process proc = new Process();
proc.StartInfo.FileName = @"txtServerPath.Text";
proc.Start();

Process.Start(txtServerPath.Text);

bf2 サーバーを手動で起動すると、正常に起動します。それで、私は何を間違っていますか?
問題があれば、私のプログラムは Windows Server 2003 と Windows 7 の両方から実行されます。

4

1 に答える 1

0

デバッグ アサーションに失敗しました! バージョン 1.0.2446.12 ビルド日: モジュール: Python ファイル: c:\dice\Projects\BF2Branches\BF2Demo\Code\BF2\Game\Python\PythonHost.Cpp 行:243

テキスト: bf2 モジュールをインポートできませんでした:

現在の設定:

エラーのパスは、PythonHost.cpp が書き込まれたマシン上のパスであるため、存在しません。「デバッグ アサーション」とは、コードの開発者が cpp ファイルの指定された行番号に条件チェックを配置して、「すべてが正常に動作する」ことを確認するために特定の条件をチェックすることを意味します。しかし明らかにそうではありません。BF2 にデバッグ バージョンがインストールされているのは奇妙に思えます。

とにかく、プロセスは開始されますが、エラーが発生します。問題は、C# 内からプロセスを開始したときに、「bf2」という名前の python モジュールが見つからないことです。

そのため、まず {BF2 インストール フォルダ}\python\bf2\ __init__.py が存在することを確認します。

なぜこれが起こっているのかを理解するために、次のように BF2 を起動してみてください (C# アプリケーションがコンソール アプリケーションであると仮定します)。

Process bf2 = new Process();
bf2.StartInfo.FileName = @"C:\Program Files\EA Games\Battlefield 2\BF2.exe";
bf2.StartInfo.Arguments = "+debugOutput 1";
bf2.StartInfo.UseShellExecute = false;
bf2.StartInfo.RedirectStandardOutput = true;
bf2.StartInfo.RedirectStandardError = true;
bf2.Start();    

Console.WriteLine(bf2.StandardOutput.ReadToEnd());
Console.WriteLine(bf2.StandardError.ReadToEnd());

これにより、コンソールにいくつかのログが出力されるはずです。これにより、何か役立つことが推測できると思います。

ところで、残りのエラー メッセージを投稿できますか (つまり、'Current confile:' 行の後)。

于 2012-07-09T11:40:26.913 に答える