Question

Plus par intérêt qu'autre chose, mais pouvez-vous compiler une application DirectX sous Linux ?

Évidemment, il n'y a pas de SDK officiel, mais je pensais que cela pourrait être possible avec Wine.

Vraisemblablement, Wine a une implémentation de l'interface DirectX afin d'exécuter des jeux ?Est-il possible d'établir un lien contre cela ?(modifier:C'est ce qu'on appelle winelib)

À défaut, peut-être un compilateur croisé Mingw avec l'application exécutée sous Wine.

La moitié a répondu à ma propre question ici, mais je me demandais si quelqu'un avait entendu parler de quelque chose de ce genre ?

Était-ce utile?

La solution

J'ai eu de la chance avec ça.j'ai réussi à compiler cet exemple simple de Direct3D.

J'ai utilisé winelib pour cela (package wine-dev sur Ubuntu).Grâce à alastair pour m'avoir indiqué winelib.

J'ai légèrement modifié la source pour convertir les wchars en chars (1 à la ligne 52, 2 à la ligne 55, en supprimant le L avant les chaînes littérales).Il existe peut-être un moyen de contourner ce problème, mais cela l'a permis de démarrer.

J'ai ensuite compilé le source avec ce qui suit :

wineg++ -ld3d9 -ld3dx9 triangle.cpp

Cela génère un binaire a.out.exe.so, ainsi qu'un script a.out pour l'exécuter sous wine.

Autres conseils

S'il ne s'agit pas de portage mais de création, vous devriez vraiment considérer OpenGL car cette API est aussi puissante que DirectX et beaucoup plus facile à porter sur Mac ou Linux.

Je ne connais pas vos besoins, alors mieux vaut le mentionner.

Vous ne pouvez pas établir de lien avec wine car il s'agit essentiellement d'un interdicteur/traducteur d'appel plutôt que d'un ensemble de bibliothèques auxquelles vous pouvez vous connecter.Si Linux est important, optez pour OpenGL/SDL/OpenAL.

Je crois (je n'ai jamais essayé cela) que vous pouvez compiler des binaires Linux avec winelib.Cela fonctionne donc comme un exécutable Linux, mais avec les bibliothèques Windows.

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

allez dans le répertoire contenant la source et tapez :

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

Si vous obtenez cette erreur :

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

assurez-vous d'avoir nommé votre fichier main.cpp et non main.c.

Il n'existe actuellement aucun moyen de compiler du code DirectX pour cibler directement Linux.Vous créeriez votre application comme vous le feriez normalement, puis l'exécuteriez en utilisant une couche de compatibilité telle que Wine/Cedega.

Vin est le seul moyen d'exécuter DirectX sous Linux

vous pouvez compiler une application DirectX sous Linux, mais ne pas la lancer immédiatement.si vous utilisez un compilateur croisé qui crée Windows exe et pointez vers le SDK Windows et le SDK DirectX.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top