What g++ version were you using? What were the exact command lines you used to 
build your program?

------------------                               
Best regards,
lh_mouse
2015-05-21

-------------------------------------------------------------
发件人:Etienne Sandré-Chardonnal <etienne.san...@m4x.org>
发送日期:2015-05-21 14:55
收件人:mingw-w64-public
抄送:
主题:[Mingw-w64-public] Multiple definition issue with -flto,
        MinGW-w64 4.9.1

Dear all,

I tested -flto on a pretty large program today, and it fails with a
multiple definition error:

./release\scenehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD0Ev[_ZThn16_N12BufferStreamD0Ev]+0x0):
multiple definition of `BufferStream::~BufferStream()'

./release\consolehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD0Ev[_ZTv0_n24_N12BufferStreamD0Ev]+0x0):
first defined here

./release\scenehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD0Ev[_ZThn16_N12BufferStreamD0Ev]+0x0):
multiple definition of `non-virtual thunk to BufferStream::~BufferStream()'

./release\consolehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD0Ev[_ZTv0_n24_N12BufferStreamD0Ev]+0x0):
first defined here
./release\scenehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD0Ev[_ZThn16_N12BufferStreamD0Ev]+0x0):
multiple definition of `virtual thunk to BufferStream::~BufferStream()'

./release\consolehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD0Ev[_ZTv0_n24_N12BufferStreamD0Ev]+0x0):
first defined here
./release\bufferstream.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD1Ev[_ZTv0_n24_N12BufferStreamD1Ev]+0x0):
multiple definition of `BufferStream::~BufferStream()'

./release\consolehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD1Ev[_ZThn16_N12BufferStreamD1Ev]+0x0):
first defined here

./release\bufferstream.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD1Ev[_ZTv0_n24_N12BufferStreamD1Ev]+0x0):
multiple definition of `virtual thunk to BufferStream::~BufferStream()'

./release\consolehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD1Ev[_ZThn16_N12BufferStreamD1Ev]+0x0):
first defined here

./release\bufferstream.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD1Ev[_ZTv0_n24_N12BufferStreamD1Ev]+0x0):
multiple definition of `non-virtual thunk to BufferStream::~BufferStream()'

./release\consolehandler.o (symbol from
plugin):(.gnu.linkonce.t._ZN12BufferStreamD1Ev[_ZThn16_N12BufferStreamD1Ev]+0x0):
first defined here


I have found this bug
<https://sourceware.org/bugzilla/show_bug.cgi?id=12762>, but it was not
followed-up since 2013 and gcc 4.6/4.7

Is this a bug or a problem in my code? The class BufferStream is defined
only once in a header file, and uses a default destructor. It is detailed
below.

Thanks,

Etienne

class BufferStream : public std::iostream

{

public:

        BufferStream();


        std::streampos size() const { return streamBuf.size(); }

        const char * data() const { return streamBuf.data(); }

        std::vector<char> getBufferAndClear() { return 
streamBuf.getBufferAndClear(); }



private:

        class StreamBuf : public std::streambuf

        {

        public:

                explicit StreamBuf();

                ~StreamBuf() { }


                int overflow(int c = EOF);

                std::streampos size() const { return pptr()-pbase(); }

                const char * data() const { return pbase(); }


                std::vector<char> getBufferAndClear();


        private:

                std::vector<char> buffer;

        };


        StreamBuf streamBuf;

};


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to