linker error with dx8

Started by
7 comments, last by Matthew02 23 years, 2 months ago
Can anyone help me out with this error... ddraw.lib : fatal error LNK1106: invalid file or disk full: cannot seek to 0x389bc777 I am using dx8 and msvc++ 5, and I am trying to compile a project I started a while ago which uses dx7 interfaces and functions. The project compiled fine until I installed dx8. The ddraw.lib file seems rather small (4.4k). Perhaps it's corrupt? I am guessing that the ddraw library that comes with dx8 is the exact one that came with dx7 (because of the ddraw/d3d integration). Anyway... I have checked my drive for errors and I have verified that the ddraw.lib file was extracted correctly during installation as well as having done a few other obvious things. That's why I'm here. Does anyone know what I should do (besides going back to dx7) to fix this error? Thanks for your help. Edited by - matthew02 on January 27, 2001 2:33:07 AM Edited by - Matthew02 on January 27, 2001 2:34:54 AM
Advertisement
I think you must update your compiler.
Maybe you have done this already, if not

Take a look in the meny

Tools->Options->Directories

Make sure your directory for the DX8 sdk is at the top on both include files and lib files, and you can even remove the old path for version 7 sdk, hope this helps
Actually, I know that vc++ 5 works with dx8. I have correctly compiled and linked some other projects not using ddraw.

I no longer have the dx7 libs on my computer, and I had already changed the paths.

I also cannot link to the d3dxof library. I get the same error with a different seek offset.

Thanks for the help, but I'm still in a rut.
Any other ideas?

Also, would someone with dx8 let me know what size their ddraw.lib file is. Thanks.

Edited by - Matthew02 on January 27, 2001 1:04:36 PM
Mathew02/
Your message is a little ambiguous Are you saying your code is still DX7 and you''ve still got the DX7 SDK installed. All you''ve changed is to install the end-user version of DirectX 8 (not the SDK), is that correct? In which case you are quite right, that shouldn''t have caused any problems.

If you''ve actually installed the DX8 SDK, then all your code *needs* updating to DX8 before anything will compile. If you''ve already updated your code to DX8 and are using the DX8 SDK, then check the paths, and check the libs. you are linking to in project settings. You want d3d8.lib in there now, not ddraw.lib.

Hope that helps.
simon_brown75/
My code still uses dx7 interfaces and methods.
I have installed the dx8 SDK.

I have a few adjustments to the code, but not many. I was under the impression that since directx is com, all previous interfaces and methods of those interfaces should work. Also, since I didn't get any "unresolved external symbol" errors, I think my code is okay.

The paths and libraries are correct. Since I am not using d3d, I shouldn't need d3d8.lib, right?

I have also tried to compile some of the sample projects. I can't get any of the sample ddraw or d3d projects to work. They all produce linker errors. I get the LNK1106 error with ddraw.lib and d3dxof.lib. I also get this error some...

LINK : error : Internal error during Pass1



I can compile and link the other samples (music, etc...).

Any other ideas?
Thanks.

Edited by - matthew02 on January 27, 2001 1:34:41 PM
For future reference, in order to use Visual C++ 5 with DirectX 8, it is required to have Visual Studio 97 Service Pack 3 installed. The service pack comes with a linker update that is necessary in order to link with the dx8 libs.
Now if anyone else asks, you know what to tell them.

Thanks for all the help.
Mathew02/
The old COM interfaces are indeed still there in the actual DirectX DLL''s (which sit in your windows system folder, like DDraw16.dll), but compilation has nothing to do with the DLL''s since they are only linked to at run-time. Visual C++ never uses these DLL''s, they are only called when you program is executed, not compiled.

Compilation on the other hand needs the LIB files from the SDK LIB folder (c:\mssdk\lib) and these files are *version specific*, therefore you will never get a DX7 program to compile with the DX8 SDK. You either need to update all your code to DX8 or go back to the DX7 SDK.
Actually, that''s a little wrong, some of the old LIB files from DX7 *are* included with DX8, but d3d.lib, for instance isn''t there. ddraw.lib and dinput.lib are there though, so you can use DirectDraw and DirectInput from DX7 I think.

Actually, the 2D capabilities of DX8 are a little sketchy at best, so it''s possible you may *need* to use the old DirectDraw from DX7 to achieve some effects.

This topic is closed to new replies.

Advertisement