Home » Newcomers » Newcomers » Undefined reference in C
Undefined reference in C [message #52901] |
Sun, 17 April 2005 00:08 |
Eclipse User |
|
|
|
Originally posted by: marie.u.washington.edu
I am using the CDT plugin that lets me use C in Eclipse. I am having one
error though, and it is driving me nuts because I can't find the exact
answer on google. I am using just one c file, Doodle.c, and here is the
beginning of it:
#include <GL/glut.h>
#include <math.h>
#include "Doodle.h"
const double pi2 = 6.28318530718;
void NonlinearMap(double *x, double *y) {
static double K = 1.04275;
*y += K * sin(*x); // (1)
*x += *y;
*x = fmod(*x, pi2); // (2)
if (*x < 0.0) {
*x += pi2;
};
};
...
(there is more to it than this, but this shows plenty).
On the line marked (1), I get the error "Undefined reference to 'sin'".
Now this is surprising, because I have the #include <math.h>. Eclipse
even has math.h listed in the Outline pane, and I can double click it and
math.h opens up. An odd thing is that I cannot find any reference to a
sin function in that file. I have exactly the same problem with fmod on
the line marked (2). I have identical errors involving anything having to
do with GL/glut.h, also included above (same ability to open glut, same
inability to find any reference to the involved functions in it). I am
reasonably confident of the code because it is example code from a
website. Help! I am so clueless!
Marie
|
|
|
Re: Undefined reference in C [message #53105 is a reply to message #52901] |
Sun, 17 April 2005 11:25 |
Eclipse User |
|
|
|
Originally posted by: Andreas.Fester.agile.com
Hi Marie,
you also need to make the appropriate libraries available.
Include files only contain the prototypes and structures necessary
to use the functions; for example for sin(), you need the math library
(usually something like libm.so, assuming you are on a Unix system)
which contains the real implementation of the functions.
I dont currently have my Eclipse installation with CDT available, but
there must be an entry somewhere below Project Properties where you can
add libraries. At least, the linker needs to retrieve an option such
as "-lm" to link against the math library (the lib prefix and the .so suffix
are added automatically).
Best Regards,
Andreas
Marie Tessier wrote:
> I am using the CDT plugin that lets me use C in Eclipse. I am having one
> error though, and it is driving me nuts because I can't find the exact
> answer on google. I am using just one c file, Doodle.c, and here is the
> beginning of it:
>
> #include <GL/glut.h>
> #include <math.h>
> #include "Doodle.h"
>
> const double pi2 = 6.28318530718;
>
> void NonlinearMap(double *x, double *y) {
> static double K = 1.04275;
> *y += K * sin(*x); // (1)
> *x += *y;
> *x = fmod(*x, pi2); // (2)
> if (*x < 0.0) {
> *x += pi2;
> };
> };
> ..
> (there is more to it than this, but this shows plenty).
>
> On the line marked (1), I get the error "Undefined reference to 'sin'".
> Now this is surprising, because I have the #include <math.h>. Eclipse
> even has math.h listed in the Outline pane, and I can double click it and
> math.h opens up. An odd thing is that I cannot find any reference to a
> sin function in that file. I have exactly the same problem with fmod on
> the line marked (2). I have identical errors involving anything having to
> do with GL/glut.h, also included above (same ability to open glut, same
> inability to find any reference to the involved functions in it). I am
> reasonably confident of the code because it is example code from a
> website. Help! I am so clueless!
>
> Marie
|
|
|
Re: Undefined reference in C [message #53206 is a reply to message #53105] |
Sun, 17 April 2005 17:43 |
Eclipse User |
|
|
|
Originally posted by: marie.u.washington.edu
Thank you, that helped some and it gave me some more search terms for
google. I came up with this:
"I fixed my problem. I had to include every source folder in the project
paths source tab (Properties --> C/C++ Project Paths --> Source). Once I
had my Source option set up correctly the auto discovery found all my
libraries. This is cool. Now I can do my Java and C programming all in
one IDE. The C plugin has a mere fraction of what I have in Java for IDE
functionality, but I guess its enough. I can even run the project from
within Eclipse now."
This persion's problem was that he could not figure out how to add
things to the blue 'Includes' folder, which I see in my system does not
have '/usr/lib' in it. This is of course a problem because that appears
to be a large repository of libraries on my computer. So this snippet of
help is really cool except that there is no 'C/C++ Project Paths'
section in the Properties box in my Eclipse, which is 3.0.2. Perhaps
this was in a previous version. How do I do this in my version?
On a note to the development team, it could be easier to add paths to
the includes section, maybe add it to a properties option accessible by
right clicking on the includes folder in the file tree.
Marie Tessier
Andreas Fester wrote:
> Hi Marie,
>
> you also need to make the appropriate libraries available.
> Include files only contain the prototypes and structures necessary
> to use the functions; for example for sin(), you need the math library
> (usually something like libm.so, assuming you are on a Unix system)
> which contains the real implementation of the functions.
> I dont currently have my Eclipse installation with CDT available, but
> there must be an entry somewhere below Project Properties where you can
> add libraries. At least, the linker needs to retrieve an option such
> as "-lm" to link against the math library (the lib prefix and the .so suffix
> are added automatically).
>
> Best Regards,
>
> Andreas
>
> Marie Tessier wrote:
>
>
>>I am using the CDT plugin that lets me use C in Eclipse. I am having one
>>error though, and it is driving me nuts because I can't find the exact
>>answer on google. I am using just one c file, Doodle.c, and here is the
>>beginning of it:
>>
>>#include <GL/glut.h>
>>#include <math.h>
>>#include "Doodle.h"
>>
>>const double pi2 = 6.28318530718;
>>
>>void NonlinearMap(double *x, double *y) {
>> static double K = 1.04275;
>> *y += K * sin(*x); // (1)
>> *x += *y;
>> *x = fmod(*x, pi2); // (2)
>> if (*x < 0.0) {
>> *x += pi2;
>> };
>>};
>>..
>>(there is more to it than this, but this shows plenty).
>>
>>On the line marked (1), I get the error "Undefined reference to 'sin'".
>>Now this is surprising, because I have the #include <math.h>. Eclipse
>>even has math.h listed in the Outline pane, and I can double click it and
>>math.h opens up. An odd thing is that I cannot find any reference to a
>>sin function in that file. I have exactly the same problem with fmod on
>>the line marked (2). I have identical errors involving anything having to
>>do with GL/glut.h, also included above (same ability to open glut, same
>>inability to find any reference to the involved functions in it). I am
>>reasonably confident of the code because it is example code from a
>>website. Help! I am so clueless!
>>
>>Marie
>
>
|
|
|
Goto Forum:
Current Time: Thu Dec 26 13:08:13 GMT 2024
Powered by FUDForum. Page generated in 0.06416 seconds
|