calling clapack routines from c++

Open discussion regarding features, bugs, issues, vendors, etc.

calling clapack routines from c++

Postby djones » Mon Jun 12, 2006 3:32 pm

First let me apologize for my ignorance; I'm quite new to all this. I'm trying to call clapack routine(s) (specifically, dggev) from a main program written in c++. Before I did this, I wrote a test program in C to make sure I could get the routine to work, and was able to do this successfully. This C program included as headers the following:
Code: Select all
#include "../CLAPACK/F2CLIBS/f2c.h"
#include "../CLAPACK/SRC/blaswrap.h"
#include "../CLAPACK/clapack.h"

and i compiled it using gcc version 3.4.3 with the following command:
Code: Select all
gcc -o test test.c ../CLAPACK/lapack_LINUX.a ../CLAPACK/blas_LINUX.a ../CLAPACK/F2CLIBS/libF77.a -lm

This compiles without a problem. Now, when i try to do this from c++, i was under the impression that enclosing the header files in extern "C" { } would be enough to get it to work, i.e.,
Code: Select all
extern "C"{
#include "CLAPACK/F2CLIBS/f2c.h"
#include "CLAPACK/SRC/blaswrap.h"
#include "CLAPACK/clapack.h"
}

I tried to compile using (freq.cpp is the main program, the other .cpp programs contain other functions called by it)
Code: Select all
g++ -o freq freq.cpp derivs.cpp equation.cpp CLAPACK/lapack_LINUX.a CLAPACK/blas_LINUX.a CLAPACK/F2CLIBS/libF77.a

but i immediately get a bunch of errors from f2c.h, for instance:
Code: Select all
In file included from freq.cpp:7:
CLAPACK/F2CLIBS/f2c.h:16: error: `real' does not name a type
CLAPACK/F2CLIBS/f2c.h:132: error: `real' does not name a type
CLAPACK/F2CLIBS/f2c.h:134: error: `complex' does not name a type
CLAPACK/F2CLIBS/f2c.h:174: error: ISO C++ forbids declaration of `real' with no
type
CLAPACK/F2CLIBS/f2c.h:174: error: typedef `real' is initialized (use __typeof__
instead)

and so on...Also, clapack.h generates a million errors because somehow apparently all the types defined in f2c.h (real, integer, and so on) aren't recognized when the compiler goes through clapack.h. for instance,
Code: Select all
In file included from freqFinder.cpp:9:
CLAPACK/clapack.h:5: error: `real' has not been declared

So if anyone has any ideas about what i'm doing wrong, or why gcc has no problems with f2c.h while g++ generates many many errors, I'd appreciate any help. Perhaps i am mistaken about the extern "C" part? I should also note that i'm not using ATLAS BLAS but merely the one available with clapack at http://netlib2.cs.utk.edu/clapack. I'll probably change that at some point, but for now i'm just trying to get it to work without worrying about optimization or any of that. Thanks!
djones
 
Posts: 1
Joined: Mon Jun 12, 2006 2:20 pm
Location: Ithaca, NY

Return to User Discussion

Who is online

Users browsing this forum: No registered users and 4 guests

cron