2005 default code won't compile

I just tried compiling the 2005 default code v2.4 released on 1/12/05 and for some reason it refuses to compile. It says that it can’t find the definition for function printf and stops the build. This is the code with absolutely no modifications. Just wondering if anybody has an idea what might be wrong.

Check the option settings of MPLAB.
Project -> Build Options… -> Project
“Include Path” should be C:\mcc18\h
“Library Path” should be C:\mcc18\lib

those are correct, it compiles code from last year and the 2005 code released on 1/7/05

The IFI site says that version 2.4 of the default code “works only with C18 Compiler (ver 2.4) from Microchip”. Have you obtained and installed the new compiler?

i do have the new compiler

Could you paste the exact error that the compiler is giving you? It would help us diagnose your problem.

i’m experiencing the same problem, the exact error says

cannot find deffinition for function “printf” in (whatever file it’s being called it)

it gives no compile error, just a build fail.

Do either of you still have the old compiler installed as well as the new compiler?

It seems like you are linking with an earlier version of the compiler standard library clib.lib.
That’s where printf should now be coming from. Older compiler versions didn’t have a printf in the library and teams used the IFI version in the project printf_lib as a substitute.

Good call, Mark McLeod!.
I had issues initially, but based on past work experience, removed the old C ompiler and installed the new C compiler and errors went away. Some experienced computer users do this as a matter of SOP (standard operating procedure). Removing the old compiler program as completely as possible and installing the new MPLAB C-compiler may be your ticket to solving this kind of problem is good advice for high school students and for those of us who are a few year’s removed from high school!

The readme file for the new compiler states that it can’t be installed at the same time as the old compiler. They did make a change so that any newer compiler can be installed at the same time as 2.4, but it’s not backwards compatible.

I started off never having installed anything but MCC18 v2.4 on the team laptop (along with the GUI) and I still run into problems.

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "c:\mcc18\bin\mcc18.exe" -p=18F8520 "control.c" -fo="c:\code\code_v2.4\control.o" /i"C:\Dev-Cpp\include" /i" c:\code\code_v2.4" -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
c:\code\code_v2.4\control.c:12: unable to locate 'ifi_aliases.h'
c:\code\code_v2.4\control.c:13: unable to locate 'ifi_default.h'
c:\code\code_v2.4\control.c:14: unable to locate 'ifi_utilities.h'
c:\code\code_v2.4\control.c:15: unable to locate 'user_routines.h'
c:\code\code_v2.4\control.c:16: unable to locate 'user_Serialdrv.h'
c:\code\code_v2.4\control.c:17: unable to locate 'user_routines.c'
error 1 spawning c:\mcc18\bin\cpp18
Halting build on first failure as requested.
BUILD FAILED: Fri Jan 28 00:07:44 2005

So, did I do something really stupid?

The space between the quote and drive /i" c:…" is “driving” it batty.
Typo’s are so much fun;)

You also don’t include mcc18/h, why is that?

I think I was trying to test out other include files but I originally did include mcc18/h and c:\mcc18\h as well as c:\code\code_v2.4. Of note also is that when I try and just compile the default code, every other source file has a similar error (the compile halts on first error after trying control.c).

Also, I was trying to do this in the gui, maybe I should do it right and go command line?

UPDATE:
Now the problem is that compiler cannot find stdio.h. What is stdio used for in this code (i.e. is it just used for printf and such)?

Primarily printf(), but could be used for other things. Go to the project build settings amd set the directories to “suite defaults” (there’s a button).

I had already tried that to no avail.

Can you give us the exact error message?

It was a few posts before, only there wasn’t a line specifically for stdio.

I notice you haven’t corrected your typo. There’s no such thing as a blankC drive.

You should probably go back to the defaults and get it compiling before you attempt to redirect everything.
In MPLAB go to Project -> Build Options… -> Project and clear all fields (and I mean ALL fields) except for Include Path (C:\mcc18\h) and Library Path (C:\mcc18\lib).
You can also hit “Suite Defaults” to clear them for you, but make sure you have the Include Path C:\mcc18\h (no blanks).
Don’t add anything else.

I did fix the error you talked about (I just copied and pasted from the other post). I do know about there being no blank c drive :wink:

Everything (but lib and inc, which are set correctly) is already blank. Still nothing.

Odd. The blankC is still there in your compile listing ( /i"C:\Dev-Cpp\include" /i" c:\code\code_v2.4), and the include setting for c:mcc18/h is not. I hope you didn’t copy and paste from my post. That just highlighted the “blank” error.Executing: “c:\mcc18\bin\mcc18.exe” -p=18F8520 “control.c” -fo=“c:\code\code_v2.4\control.o” /i"C:\Dev-Cpp\include" /i" c:\code\code_v2.4" -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Can you compile the default 2.4 code?

You show several paths that are not part of the MPLAB default settings, so I assume you set them up. Are you using the “Use Alternate Settings” in MPLAB look under Project -> Build Options… -> Project, then the MPLAB C18 tab? If you are then add the c:mcc18/h path there as well.

Your compile line should look like:
Executing: “C:\mcc18\bin\mcc18.exe” -p=18F8520 “main.c” -fo=“main.o” /i"c:\mcc18\h" -D_FRC_BOARD -D_USE_CMU_CAMERAIf you cannot get the mcc18/h path into the compile statement you might consider uninstalling MPLAB IDE and reinstalling it.