Frage

Mehr aus Interesse als alles andere, aber kann Sie kompilieren eine DirectX-app unter linux?

Offensichtlich gibt es keine offizielle SDK, aber ich dachte, es könnte möglich sein, mit Wein.

Vermutlich Wein hat eine Implementierung der DirectX-Schnittstelle, um Spiele zu spielen?Ist es möglich, gegen, dass?(Bearbeiten:Dies wird als winelib)

Gelingt das nicht, vielleicht ein mingw-cross-compiler mit der app, die unter wine laufen.

Die Hälfte beantwortete meine eigene Frage hier, aber fragte mich, ob jemand hatte gehört, der so etwas getan?

War es hilfreich?

Lösung

Ich hatte etwas Glück mit dabei.Ich habe es geschafft zu kompilieren dieses einfache Direct3D Beispiel.

Ich verwendet winelib für diese (Wein-dev-Paket auf Ubuntu).Dank alastair für den Hinweis mich an winelib.

Ich veränderte die Quelle leicht zu konvertieren, die wchars chars (1 auf der Linie 52, 2 auf der Linie 55 durch entfernen des L vor der string-Literale).Es kann ein Weg, das zu umgehen, aber das hat es bis und läuft.

Ich habe dann kompiliert die Quelle mit den folgenden:

wineg++ -ld3d9 -ld3dx9 triangle.cpp

Dies erzeugt eine ein.aus.exe.so Binär, wie auch eine ein.aus Skript ausgeführt wird, es unter wine.

Andere Tipps

Wenn dies nicht über die Portierung aber, Sie sollten sich wirklich überlegen OpenGL als diese API ist so mächtig wie DirectX und viel leichter Anschluss an Mac oder Linux.

Ich weiß nicht, Ihren Anforderungen so besser, es zu erwähnen.

Sie können nicht link gegen Wein als es ist im wesentlichen eine Aufforderung Unterbrecher/übersetzer eher als ein Satz von Bibliotheken können Sie Haken in.Wenn linux ist wichtig, go OpenGL/SDL/OpenAL.

Ich glaube(habe ich nie ausprobiert) kann man kompilieren Sie Linux-binarys gegen winelib.Es funktioniert also genau wie ein Linux ausführbar, aber mit den windows-Bibliotheken.

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

gehen Sie in das Verzeichnis mit der Quelle und geben Sie in:

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

Wenn Sie diese Fehlermeldung erhalten:

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

stellen Sie sicher, Sie haben den Namen Ihrer Datei main.cpp und nicht main.c.

Es gibt derzeit keine Möglichkeit, zu kompilieren DirectX-code, um direkt an die Zielgruppe Linux.Erstellen Sie Ihre Anwendung, wie Sie normalerweise würde, dann führen Sie es mit einer Kompatibilitätsebene, wie Wine/Cedega.

Wein ist das der einzige Weg, DirectX, in Linux

Sie stellen eine directx-Anwendungen in linux, aber nicht starten Sie es sofort.wenn Sie eine crosscompilator, mit der windows-exe-Datei und zeigen Sie auf die windows-sdk und das directx-sdk.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top