0

Ogre3D を使用したプロジェクトに取り組んでいます。最近、プロジェクトを MacOSX に移植しましたが、Windows API にリンクされているものもいくつかあります。特に、これをどのように翻訳すればよいかわかりません。

#if defined( __WIN32__ ) || defined( _WIN32 )
    AllocConsole();
#endif

いつかプロジェクトを Linux に移植できればいいのですが、標準出力/入力用にコンソールを割り当てる Unix 互換の方法はありますか?

ありがとうございました

4

1 に答える 1

3

UNIX の観点から言えば、私は Mac 固有の開発経験があまりないためです。

コンソールはデフォルトで「割り当て」られています。ただし、OS にコンソールを開くように命令することはできません。ターミナルで開くために使用している IDE を伝えるか、それがサポートされている場合は、GUI を使用しているにもかかわらず、現在のアプリケーションをコンソール アプリケーションとして作成します。

コンソールがデフォルトで割り当てられるとはどういう意味ですか? 各プロセスは、実際には呼び出しプロセスからstdin, stdoutand stderr(ファイル識別子 0、1、および 2) を取得します。したがって、呼び出しプロセス ( bash、Finder など) が都合よくそれらを開いたままにしておくことを忘れない限り、常にコンソールを開いたままにしておく必要があります。

コンソールを取得する最も簡単な方法は、Finder が GUI から実行するように、ターミナルからアプリケーションを起動することです。.apps は実際にはフォルダーです。

/projects/myapp$ ./BuiltApplication.app/Contents/MacOS/BuiltApplication

Finder は、現在の作業ディレクトリを .app バンドルが配置されているフォルダーに設定するため、上記はそれをすべて最適にエミュレートします。

/Applications/Utilities/Console.appさらに、 MacOS に含まれているコンソール アプリケーションを参照してください。コンソールは通常、stdout と stderr を表示するために使用されます。私は Mac を使用していないため、これをテストすることはできませんが、stdout と stderr をそこにリダイレクトする必要があると言うソースを実際に見つけました。この投稿を参照してください

Console.app を使用して、通常の方法で起動されたアプリケーションの出力を確認できます。これは、起動インフラストラクチャが特別にstdoutandを送信するためstderrです。asl必要に応じて、ルーチンを使用してログを照会したり、より高度なログを実行したりすることもできます。

于 2009-10-06T19:45:09.130 に答える