octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: duplicate instantiations


From: Michael Goffioul
Subject: Re: duplicate instantiations
Date: Tue, 2 Jun 2009 22:15:24 +0100

On Tue, Jun 2, 2009 at 6:44 PM, Jaroslav Hajek <address@hidden> wrote:
> Hi Michael,
>
> I just tried compiling octave with this patch:
>
> diff --git a/libcruft/misc/oct-dlldefs.h b/libcruft/misc/oct-dlldefs.h
> --- a/libcruft/misc/oct-dlldefs.h
> +++ b/libcruft/misc/oct-dlldefs.h
> @@ -26,6 +26,9 @@
>  #if defined (_MSC_VER)
>  #define OCTAVE_EXPORT __declspec(dllexport)
>  #define OCTAVE_IMPORT __declspec(dllimport)
> +#elif __GNUC__ >= 4
> +#define OCTAVE_EXPORT __attribute__ ((visibility("default")))
> +#define OCTAVE_IMPORT OCTAVE_EXPORT
>  #else
>  /* All other compilers, at least for now. */
>  #define OCTAVE_EXPORT
>
>
> and get a bunch of undefined references when linking liboctinterp. It
> seems that GCC requires the __attribute__ tags be added at the
> definition point. That is, we would need to tag Array<T> and other
> classes with OCTAVE_API. Would it also work for MSVC? This may be
> worth further investigations after 3.2.
> I should note that the size of liboctave was reduced by mere 5.8%,
> which is really not much.

Marking template declaration does not work for MSVC. I even
had to remove some of them in my recent patches, because it
produces compilation errors
(seehttp://hg.savannah.gnu.org/hgweb/octave/rev/3c1762c7e787).

It's odd that GCC does not work with specifying the visibility of
explicit instantiation. Googling a little, I found those 2 links. It
seems there used to be a limitation about this, but as far as I
understand, it should be fixed in >= 4.2.0.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17470
http://developer.apple.com/DOCUMENTATION/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html

I had hoped that the visibility attribute would work as dllexport
under MSVC, adding more uniformity between compilers.
Anyway, this is a long term issue. I'm not sure the benefit would
be huge for octave libs as they basically exports almost everything.

Thanks for looking at it.

Michael.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]