Getting xodeint from numerical recipes to work in dev-c++

  • Context: C/C++ 
  • Thread starter Thread starter mjordan2nd
  • Start date Start date
  • Tags Tags
    Numerical Work
Click For Summary

Discussion Overview

The discussion revolves around issues encountered while trying to compile and run code from Numerical Recipes using the Dev-C++ environment. Participants are addressing problems related to missing files, compilation errors, and the differences between C and C++ programming languages.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • One participant reports errors during compilation, indicating potential missing files necessary for linking, such as functions related to vectors and Bessel functions.
  • Another participant questions the terminology used, suggesting that "machine-readable code" is misleading and clarifies that .c files are human-readable source code.
  • A participant confirms that the errors are likely occurring during the linking stage and requests the linking command used by the development environment to identify missing libraries.
  • Concerns are raised about using Dev-C++ for compiling C code, with a suggestion that it may not properly handle C source files, and a recommendation to consider using a dedicated C compiler like gcc.
  • There are suggestions that the participant may be missing essential .c files or may need to compile intermediate object files before linking.

Areas of Agreement / Disagreement

Participants generally agree that there are missing components necessary for successful compilation, but there is no consensus on the specific files or solutions required to resolve the issues presented.

Contextual Notes

There is uncertainty regarding the specific files needed for compilation and linking, as well as the appropriate compiler settings for C versus C++ in the Dev-C++ environment.

mjordan2nd
Messages
173
Reaction score
1
I am taking a computational physics course, and currently I have very little knowledge of programming. I have downloaded the numerical recipes machine-readable code, and I am trying to get one of their examples to work in dev-c++. Unfortunately, I am having difficulty.

I have copied xodeint.c, odeint.c, nrutil.h, nrutil.c, and nr.h from subdirectories of ./nr_c304/legacy/nr2/C_211 into my project folder. I then pulled up xodeint.c in dev-c++. Upon compilation, I got the following errors:

Code:
6   0   C:\Users\Amol\Documents\School\graduate computational\ODEexample\xodeint.c  In file included from C:\Users\Amol\Documents\School\graduate computational\ODEexample\xodeint.c
183 7   C:\Users\Amol\Documents\School\graduate computational\ODEexample\nr.h   [Warning] conflicting types for built-in function 'fmin' [enabled by default]
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x195): undefined reference to `vector'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x1a8): undefined reference to `vector'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x1cd): undefined reference to `matrix'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x1ef): undefined reference to `bessj0'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x211): undefined reference to `bessj1'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x238): undefined reference to `bessj'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x25f): undefined reference to `bessj'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x2b5): undefined reference to `rkqs'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x30a): undefined reference to `odeint'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x3e7): undefined reference to `bessj'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x4d4): undefined reference to `free_matrix'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x4f1): undefined reference to `free_vector'
C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o xodeint.c:(.text+0x508): undefined reference to `free_vector'
c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe    C:\Users\Amol\AppData\Local\Temp\ccAOtzsJ.o: bad reloc address 0x0 in section `.pdata'
C:\Users\Amol\Documents\School\graduate computational\ODEexample\collect2.exe   [Error] ld returned 1 exit status

So I suppose I'm missing some files in my project folder that are necessary to compile the code, but I'm not sure what I'm missing. I have tried adding certain files to my project folder, such as bessj1.c, however this does not change the errors I receive. Any help in getting this working would be much appreciated.

Regards.
 
Technology news on Phys.org
Give a link to where you downloaded the code.

The phrase "machine readable code" is confusing. A file like xodeint.c that ends in ".c" should be human readable source code file, not a file of machine code.
 
I downloaded the file from here: http://www.nr.com/ under the machine readable source-code link. They're just .c and .h c files.
 
You are correct that something is missing. Compling a program can produce errors about missing things in two stages. The error can happen as a source code file is being compiled or the error can happen after the files are compiled and the linker tries to link up the object files that have been produced by the compiler.

I think the errors you show are happening when the program is being linked. (I don't use the ming compiler myself, so I base this on http://www.mingw.org/wiki/the_linker_consistently_giving_undefined_references ). Can you post the command that your development environment is using to link the program. It may mention some libraries that you haven't downloaded.
 
Stephen is correct. Those errors are unresolved symbols (function entry points). NB you are trying to compile C source with dev-c++. C++ and C are NOT the same language. I do not know dev-c++, it may have a switch setting to become a C compiler, but I doubt it. I would doubt the validity of final compiled result, if it ever succeeds. C++ runtime API semantics are not necessarily the same as those for C.

There are free C compilers - gcc is one. Consider using that. Are you on Windows, Cygwin, or Linux?

Ignoring the compiler for now -- There some possibilities:

1. You are missing some "primary" .c files
2. You have to compile some intermediate object files (usually creates a .o file) from some existing .c files. Then place them on the final compile command line.

If you have a make file please post it. Otherwise please post your compile command(s).

IMO, We should get you going with a C compiler first.
 

Similar threads

  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
Replies
9
Views
4K
  • · Replies 9 ·
Replies
9
Views
10K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
6
Views
2K
  • · Replies 12 ·
Replies
12
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 24 ·
Replies
24
Views
3K