And I extracted the files correctly,and am able to import library,and see its examples in the menu on the IDE etc...
However,when i click compile on any of the examples,
I get this error:
25: error: etherShield.h: No such file or directory In function 'void setup()':
In function 'void loop()':
Bad error line: -3
I was doing all the above on ubuntu.
Now,I tried the exact same library's example's compilation on Windows,and it compiled without a hitch! ..Very Odd!
(However,I didnt get desired results,probably because I havent used any Level shifting on my ethernet module-arduino interface.)
That's because Windows, in an act of supreme arrogance, decided that the case of file names do not matter. EtherShield.h, etherShield.h, and eThErShIeLd.H all, as for as the nitwits in Redmond are concerned, all refer to the same file.
While Unix in all its manifestations knows better.
I get the same error un Ubuntu 10.10 with arduino 18:
The compile errors on Client.cpp
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:8:25: fout: EtherShield.h: Bestand of map bestaat niet
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:11: fout: 'EtherShield' has not been declared
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:11: fout: ISO C++ forbids declaration of 'EtherShield' with no type
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:14: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:18: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:23: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:27: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:31: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:35: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:40: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:44: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:48: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:52: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:57: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:61: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:65: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:69: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:73: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:77: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:81: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:85: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:89: fout: 'EtherShield' is not a class or namespace
/home/geert/sketchbook/libraries/etherShield/etherShield.cpp:95: fout: 'EtherShield' is not a class or namespace
What PaulS was subtly referring to in Reply #3 is the following:
There is a file named etherShield.h
The file EtherShield.cpp has the following line:
#include EtherShield.h"
The Linux compiler is telling you that it can not find a file named EtherShield.h. Linux file system names are case sensitive. (Windows file system names are not case sensitive, so Windows compilers have no problems with a file name that differs only in the case of one or more of its characters.)
So: Change line 8 in EtherShield.cpp to
#include "etherShield.h"
All of the other files in the library and its examples include "etherShield.h" (with lower case initial 'e'), so that the stuff will compile with that one change. (At least it does for me.)
The way I solved this issue was to rename the folder and files "etherShield", "etherShield.h" and "etherShield.c" with capital E. The only problem with this is that you have to remember that to call EtherShield.h with capital E.
That makes things easier than renaming all the variables in the scripts.