2008-09-07 127 views
12

比其他任何東西都更令人感興趣,但是你可以在Linux下編譯DirectX應用嗎?是否可以在Linux中開發DirectX應用程序?

顯然沒有官方的SDK,但我認爲這可能與葡萄酒。

據推測,葡萄酒有執行DirectX界面以運行遊戲?有沒有可能與此相關聯? (編輯:這被稱爲winelib)

如果失敗了,也許一個mingw交叉編譯器與應用程序運行在酒下。

一半在這裏回答我自己的問題,但想知道是否有人聽說過這樣的事情?

回答

10

我有一些運氣與此有關。我已經設法編譯this simple Direct3D example

我用winelib(Ubuntu上的wine-dev包)。感謝alastair將我指向winelib。

我稍微修改了源以將wchar轉換爲字符(第52行中的第1行,第55行中的第2行,通過在字符串文字前刪除L)。這可能有一種解決方法,但是這樣做起來並且正在運行。

我然後編譯源有以下:

wineg++ -ld3d9 -ld3dx9 triangle.cpp 

這產生a.out.exe.so二進制文件,以及一個a.out腳本酒下運行它。

0

目前沒有辦法編譯DirectX代碼來直接指向Linux。您可以像平常一樣構建應用程序,然後使用像Wine/Cedega這樣的兼容層來運行它。

4

如果這不是關於移植而是創建,你應該真的考慮OpenGL,因爲這個API和DirectX一樣強大,並且更容易移植到Mac或Linux。

我不知道你的要求,所以更好地提到它。

2

運行DirectX您無法對葡萄酒的鏈接,因爲它本質上是一個呼叫攔截艦/翻譯,而不是一組你可以掛接到庫的唯一途徑。如果linux非常重要,請使用OpenGL/SDL/OpenAL。

0

你可以在linux下編譯directx應用程序,但不能馬上啓動它。 如果您使用交叉編譯器,使Windows exe和指向Windows SDK和DirectX SDK。

2

我相信(我從來沒有試過這個),你可以編譯Linux binarys對winelib。所以它就像一個Linux可執行文件,但與Windows庫。

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

+0

是的,當我問這個問題時,這就是我想到的。我會進一步調查。 – Nick 2008-09-15 23:21:58

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.cpp中,而不是main.c中。

相關問題