On 7/31/2015 12:27 PM, Óscar Fuentes wrote:
> Edward Diener <eldlistmaili...@tropicsoft.com>
> writes:
>
>>> Calling a virtual member requires an access to the vtable of the class.
>>> The vtable is defined on the dll that contains the class' code. If the
>>> class is not exported, the vtable is not exported. The errors you are
>>> seeing is the linker complaining about the missing vtable.
>>
>> So you are saying that any class with virtual functions must have the
>> class itself exported rather than the individual member functions when
>> using gcc ? Because with VC++ that is not the case, so it must be an
>> issue with gcc on Windows.
>
> Not sure what VC++ does, exactly, but this:
>
> https://msdn.microsoft.com/en-us/library/81h27t8c.aspx
>
> /quote
>
> If you export one virtual function in a class, you must export all of
> them, or at least provide versions that the client can use directly.
>
> If you have a class in which you are using selective member
> import/export with virtual functions, the functions must be in the
> exportable interface or defined inline (visible to the client).
>
> /end quote
>
> seems to say that you can't export some selected virtual members defined
> in .cpp files and hide the rest of the class.

Evidently adding a virtual destructor to ex_xml_exception in my example 
solves the link problem in my example. Why that is necessary I have no idea.



------------------------------------------------------------------------------
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to