gambit-list, I had composed a long-winded email about some trouble I was having linking against ATLAS http://math-atlas.sourceforge.net/ but I figured it out. Because I am using external C++ dependencies I compiled gambit using C++. It turns out that I want to use (c-declare #<<c-declare-end extern "C" { #include <cblas.h> }; c-declare-end ) and not (c-declare "#include <cblas.h>") This is obvious in retrospect. However I wasted about 90 minutes on this. Hopefully someone will search for gambit, linker, link, linking, atlas, blas, lapack, undefined reference and find this message here. Brady
On 2010-11-04, at 4:19 PM, Brady McCary wrote:
gambit-list,
I had composed a long-winded email about some trouble I was having linking against ATLAS
http://math-atlas.sourceforge.net/
but I figured it out. Because I am using external C++ dependencies I compiled gambit using C++. It turns out that I want to use
(c-declare #<<c-declare-end
extern "C" { #include <cblas.h> };
c-declare-end )
and not
(c-declare "#include <cblas.h>")
This is obvious in retrospect. However I wasted about 90 minutes on this. Hopefully someone will search for
gambit, linker, link, linking, atlas, blas, lapack, undefined reference
and find this message here.
Brady
Thanks for keeping a record of your errors for others to learn from. Let me add that your code could be improved by having instead: (c-declare #<<c-declare-end ___BEGIN_C_LINKAGE #include <cblas.h> ___END_C_LINKAGE c-declare-end ) The ___BEGIN_C_LINKAGE and ___END_C_LINKAGE macros, defined in gambit.h, will expand to extern "C" { ... } when compiling with a C++ compiler, and to nothing when compiling with a C compiler. So your code will be more portable because it will work regardless of the kind of C compiler you are using. Marc
participants (2)
-
Brady McCary -
Marc Feeley