12

何よりも興味深いのですが、Linux で DirectX アプリをコンパイルできますか?

明らかに公式の SDK はありませんが、wine で可能かもしれないと考えていました。

おそらくワインには、ゲームを実行するための DirectX インターフェイスが実装されていますか? それに対してリンクすることは可能ですか?(編集: これは winelib と呼ばれます)

それができない場合は、ワインの下で実行されているアプリを使用した mingw クロスコンパイラかもしれません。

半分はここで私自身の質問に答えましたが、誰かがこのようなことが行われたことを聞いたことがありますか?

4

9 に答える 9

10

私はこれで運が良かった。この単純な Direct3D の例をコンパイルすることができました。

これにはwinelibを使用しました(Ubuntuのwine-devパッケージ)。winelibを教えてくれた alastair に感謝します。

ソースを少し変更して、wchars を chars に変換しました (52 行目の 1、55 行目の 2、文字列リテラルの前の L を削除することにより)。これを回避する方法があるかもしれませんが、これでうまくいきました。

次に、ソースを次のようにコンパイルしました。

wineg++ -ld3d9 -ld3dx9 triangle.cpp

これにより、a.out.exe.so バイナリと、それを wine で実行するための a.out スクリプトが生成されます。

于 2008-09-16T09:24:47.260 に答える
4

これが移植ではなく作成に関するものである場合、この API は DirectX と同じくらい強力で、Mac や Linux への移植がはるかに簡単であるため、OpenGL を検討する必要があります。

あなたの要件がわからないので、それについて言及した方がよいでしょう。

于 2008-09-07T01:32:38.050 に答える
2

ワインは、フックできるライブラリのセットではなく、本質的にコールインターディクタ/トランスレータであるため、ワインとリンクすることはできません。Linuxが重要な場合は、OpenGL / SDL/OpenALにアクセスしてください。

于 2008-09-07T05:32:18.130 に答える
2

Linuxバイナリをwinelibに対してコンパイルできると思います(これを試したことはありません)。そのため、Linux 実行可能ファイルと同じように機能しますが、Windows ライブラリを使用します。

http://www.winehq.org/site/docs/winelib-guide/index

于 2008-09-15T20:16:59.433 に答える
1

ソースのあるディレクトリに移動し、次のように入力します。

winemaker --lower-uppercase -icomdlg32 -ishell32 -ishlwapi -iuser32 -igdi32 -iadvapi32 -ld3d9 .
make
wine yourexecutable.exe.so

このエラーが発生した場合:

main.c:95:5: error: ‘struct IDirect3D9’ has no member named ‘CreateDevice’

ファイルにmain.cではなくmain.cppという名前を付けていることを確認してください。

于 2013-03-23T12:05:43.200 に答える
0

LinuxでDirectXアプリをコンパイルすることはできますが、すぐに起動することはできません。Windows exeを作成し、WindowsSDKとDirectXSDKを指すクロスコンパイラを使用する場合。

于 2008-09-07T06:10:12.623 に答える
0

Wineは Linux で DirectX を実行する唯一の方法です

于 2008-09-07T04:50:00.523 に答える
0

現在、DirectX コードをコンパイルして Linux を直接ターゲットにする方法はありません。通常どおりにアプリケーションを構築し、Wine/Cedega などの互換性レイヤーを使用して実行します。

于 2008-09-07T00:33:32.137 に答える