From: <AWL...@ao...> - 2003-06-23 23:12:23
|
In a message dated 6/22/2003 9:45:47 PM Eastern Standard Time, br...@rc... writes: > Thanks, this works perfectly. But I'd still love to know the details of > what is going on. Is it even possible to link to a MS supplied > library? How? > >Searching Google for '"directx 9" mingw' gives this link to an import > >library that you can probably try instead of d3d9.lib: > > > >http://www.gametutorials.com/forum/topic.asp?TOPIC_ID=4402&whichpage=2 I've got some bad news for you. Short story: Nontrivial, legal D3D programs are going to be difficult to get working. Longer story: As far as I know, noone has ever really gotten it to work. Its easy enough to get the base DX9 interface to work, largely because of the beauty of COM. The problem is the D3DX library. What works: Everything we care about in the DX9 libs is uses the cdecl ABI, which is excellent, because that means we can link to it with GCC. Furthermore, the D3D9 library is in a .DLL, which means all we need is an import library to link against it, which is trivial. However, the D3DX library will be necessary to do any serious work with D3D. It is primarily provided in a normal static library, which GCC has trouble with. It is also provided in a DLL for use with debugging, and this is the workaround the above site uses, but unfortunately, to the best of my knowledge, it is not legal to redistribute these DLLs. (Its also worth noting that, unlike the usual PSDK license, linking against .LIBs that may cause executables to be considered derivative works is given no special consideration; this may mean it is infringing to distribute an application linked against D3DX9; however, it is almost certainly an oversight, and probably not the intent, so i would suspect noone sensible is worrying about it.) As far as linking against the static D3DX lib, which is the usual and preferred way of doing this, expect difficulties. There are quite a lot of problems involving getting the linkage to work for nontrivial D3D programs, including a few showstoppers that I have been unable to fix thus far. Of course I would love to hear from anyone who has gotten this to work. Aaron |
From: Brenden T. <br...@rc...> - 2003-06-24 20:18:19
|
Thank you for the long reply! :) More comments below... AWL...@ao... wrote: >In a message dated 6/22/2003 9:45:47 PM Eastern Standard Time, br...@rc... writes: > > >>Thanks, this works perfectly. But I'd still love to know the details of >>what is going on. Is it even possible to link to a MS supplied >>library? How? >> >> ><SNIP> >Longer story: > >As far as I know, noone has ever really gotten >it to work. > >Its easy enough to get the base DX9 interface to work, >largely because of the beauty of COM. The problem is >the D3DX library. > >What works: Everything we care about in the DX9 libs is >uses the cdecl ABI, which is excellent, because that >means we can link to it with GCC. Furthermore, the D3D9 >library is in a .DLL, which means all we need is an >import library to link against it, which is trivial. > >However, the D3DX library will be necessary to do any >serious work with D3D. It is primarily provided in a >normal static library, which GCC has trouble with. It is >also provided in a DLL for use with debugging, and this is >the workaround the above site uses, but unfortunately, >to the best of my knowledge, it is not legal to redistribute >these DLLs. > Redistribution is not an issue for me, I'm just educating myself and having fun on my hard drive right now. I'm really amazed tho to here that GCC has issues with a static library. I would have thought that would be the easiest case. Maybe there are some differences between the code generated by GCC and MS? Differences in calling convention or exception handling, that sort of thing. But if there are issues I'd love to help. >(Its also worth noting that, unlike the >usual PSDK license, linking against .LIBs that may cause >executables to be considered derivative works is given no >special consideration; this may mean it is infringing to >distribute an application linked against D3DX9; however, >it is almost certainly an oversight, and probably not >the intent, so i would suspect noone sensible is worrying >about it.) > >As far as linking against the static D3DX lib, which is the >usual and preferred way of doing this, expect difficulties. >There are quite a lot of problems involving getting the >linkage to work for nontrivial D3D programs, including >a few showstoppers that I have been unable to fix thus far. > > > I'd like to here about what sort of problems you've had. "Many hands make light work." If more people are working on fixing this, then it has a better chance of actually happening. |
From: Earnie B. <ear...@ya...> - 2003-06-24 20:40:12
|
Brenden T. wrote: > > Redistribution is not an issue for me, I'm just educating myself and > having fun on my hard drive right now. I'm really amazed tho to here > that GCC has issues with a static library. I would have thought that > would be the easiest case. Maybe there are some differences between the > code generated by GCC and MS? Differences in calling convention or > exception handling, that sort of thing. But if there are issues I'd > love to help. > -8<- > I'd like to here about what sort of problems you've had. "Many hands > make light work." If more people are working on fixing this, then it > has a better chance of actually happening. > You might want to start looking at the archives, see http://www.mingw.org. This looks like an exciting result from google http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=directx+mingw&btnG=Google+Search Earnie. |