Many thanks to those who've offered help. It still isn't fixed, but I'm making progress. Just as a reminder, here is the linker command line (the project and source files are AD.*): Linking: Command line: "E:\PROGFILE\MPLAB\MPLINK.EXE /o AD.HEX /l C:\MCC\LIB /k C:\MCC\EXAMPLES\AD AD.O C:\MCC\LIB\C0S17.O C:\MCC\LIB\IDATA17.O C:\MCC\LIB\INT756L.O C:\MCC\LIB\P17C756.O P17C756L.LKR " Bob was almost right when he wrote the following, and he put me on the right track: > This all looks to me like a classic current directory > problem. Note that, in the above, "AD.HEX" is the only > file for which no absolute path is specified. In fact, the problem isn't with the AD.HEX file, it's with the AD.O file. The compiler gets told the full path to the AD.C source file, finds it and generates the AD.O file in the same directory. But the linker *doesn't get told the full path to the AD.O file*. If you look at the command line above, you will see the object file (just after the /k directive) is simply listed as AD.O. As far as I'm concerned this is a bug in MPLAB. It should give the full path of the object file to the linker, in the same way as it gives the full path of the source file to the compiler. As far as I can tell, the linker regards the "current directory" as the MPLAB directory (e:\progfile\mplab\). If I start a command prompt, set the current directory to the MPLAB directory and type the command line shown above, the linker fails with: Error - could not find file 'AD.O'. BUT, I can do two things to make the build work. The first method is to 'cd' to the directory which contains AD.O, repeat the command line and it all works. In other words, I make the "current directory" the one which contains the AD.O file. The second approach is to stay in the MPLAB directory and modify the above command line to give the full path to the AD.O file. Again, it works. Trouble is, both of these need me to work from the command line, which I want to avoid. That's why I got MPLAB, after all. It seems to boil down to two options, neither of which I know how to do. I need to modify MPLAB so it gives the linker the full path to the .O file. Or I need to change what the linker regards as the "current directory". And now I'm flummoxed again!! Any ideas, anyone? Oh, by the way, I have added all the MPLAB and MCC directories to the path, and even the directory containing the AD.O file, but it hasn't helped. The linker apparently won't search the path for the object file. At risk of sounding like a stuck record, I really do appreciate all the help you are giving. I hope I can do the same in return someday. Best wishes to all, Steve Steve Thackery Suffolk, England. Web Site: http://www.btinternet.com/~stevethack/