2008-09-07 100 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中。

相关问题