From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,840fead62ccf9fad X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Received: by 10.66.83.40 with SMTP id n8mr6544974pay.42.1351292774395; Fri, 26 Oct 2012 16:06:14 -0700 (PDT) Path: 6ni32511pbd.1!nntp.google.com!news.glorb.com!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Re: pragma import (C, , ); -- import a constant value from C library Date: Sat, 27 Oct 2012 00:06:06 +0100 Organization: A noiseless patient Spider Message-ID: References: Mime-Version: 1.0 Injection-Info: mx04.eternal-september.org; posting-host="36fd3459bdfc79b1cfb1716bdcdac508"; logging-data="11735"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1969/aWcYaaZGBQPLyiGa1Ze6rvPIyzdB4=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (darwin) Cancel-Lock: sha1:q7cQgX5ddPQI1oHDR5lh4YF4OgA= sha1:xoJbjQt00kvX1186WXV/NskaSZg= Content-Type: text/plain Date: 2012-10-27T00:06:06+01:00 List-Id: Enzo Guerra writes: > trying to import a constant value from C library (libgsl) > but having no luck > > M_EULER : Long_Float; > -- M_EULER, Euler's constant, \gamma > pragma Import (C, M_EULER, "M_EULER"); > > get error undefined reference to `M_EULER' > > would appreciate any help I wonder if the C M_EULER is in fact a macro? If so, it doesn't exist in the library as a symbol in its own right. You might try defining it as a variable in C and importing that: /* m_euler_definition.c */ #include /* wherever M_EULER's defined */ const double m_euler_for_gnat = M_EULER; -- m_euler.ads M_EULER : constant Long_Float; -- or Interfaces.C.double pragma Import (C, "M_EULER", "m_euler_for_gnat"); and then when you build you'll need to include m_euler_definition.o.