Вопрос

Скорее из интереса, чем что-либо еще, но можете ли вы скомпилировать приложение DirectX под Linux?

Очевидно, официального SDK не существует, но я думал, что это возможно с Wine.

Предположительно, в Wine есть реализация интерфейса DirectX для запуска игр?Можно ли связать это с этим?(редактировать:Это называется Winelib)

В противном случае, возможно, кросс-компилятор mingw с приложением, работающим под Wine.

Половина ответила на мой собственный вопрос здесь, но интересно, слышал ли кто-нибудь о чем-то подобном?

Это было полезно?

Решение

Мне повезло с этим.мне удалось скомпилировать этот простой пример Direct3D.

Для этого я использовал Winelib (пакет Wine-dev в Ubuntu).Благодаря Аластер за то, что указал мне на Winelib.

Я немного изменил исходный код, чтобы преобразовать символы wchars в символы (1 в строке 52, 2 в строке 55, удалив букву L перед строковыми литералами).Может быть, есть способ обойти это, но это заставило его работать.

Затем я скомпилировал исходный код следующим образом:

wineg++ -ld3d9 -ld3dx9 triangle.cpp

При этом создается двоичный файл a.out.exe.so, а также сценарий a.out для его запуска под Wine.

Другие советы

Если речь идет не о портировании, а о создании, вам действительно следует рассмотреть OpenGL, поскольку этот API столь же мощный, как DirectX, и его гораздо проще портировать на Mac или Linux.

Я не знаю ваших требований, поэтому лучше упомяните об этом.

Вы не можете ссылаться на Wine, поскольку это, по сути, перехватчик/переводчик вызовов, а не набор библиотек, к которым вы можете подключиться.Если Linux важен, используйте OpenGL/SDL/OpenAL.

Я верю (я никогда этого не пробовал), что вы можете скомпилировать двоичные файлы Linux с помощью Winelib.Таким образом, он работает так же, как исполняемый файл Linux, но с библиотеками Windows.

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

перейдите в каталог с исходником и введите:

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.cpp, а не main.c.

В настоящее время нет способа скомпилировать код DirectX для непосредственного использования Linux.Вы создадите свое приложение, как обычно, а затем запустите его, используя уровень совместимости, такой как Wine/Cedega.

Вино это единственный способ запустить DirectX в Linux

вы можете скомпилировать приложения DirectX в Linux, но не запускать их сразу.если вы используете кросс-компилятор, который создает Windows exe и указывает на Windows SDK и DirectX SDK.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top