kplato compile problem on windows

Jan Hambrecht jaham at gmx.net
Mon Jan 24 08:52:23 GMT 2011


On 24.01.2011 08:57, Pierre Stirnweiss wrote:
> As some of may know, I am trying to get Calligra to compile on Windows
> MSVC2010. I have encountered a couple of problems, which were easy
> enough to solve (with the help of SaroEngels).
> The one I am facing now is apparently way more complicated:
>
> in kplato/libs/kernel/kpappointment.h we have the following:
>
> class KPLATO_EXPORT AppointmentInterval {}
> class KPLATO_EXPORT AppointmentIntervalList: public QMultiMap<QDate,
> AppointmentInterval> {}
>
> This construct yields the error C2487:
> 'identifier' : member of dll interface class may not be declared with
> dll interface
> You can declare a whole class, or certain members of a non-DLL interface
> class, with DLL interface. You cannot declare a class with DLL interface
> and then declare a member of that class with DLL interface.
>
>
> According to SaroEngels, both QDate and AppointmentInterval are
> problematic here. A solution he proposed to this is to have the following:
>
> class KPLATO_EXPORT AppointmentInterval;
>
> class AppointmentIntervalBase : public QMultiMap<QDate, AppointmentInterval>
>
> class KPLATO_EXPORT AppointmentIntervalList : public AppointmentIntervalBase
>
>
> Any further thought on this?

I would try to change the class from <Is a QMultimap> to <Has a 
QMultimap>. If I remember correctly from a short look yesterday, nowhere 
in the code are the QMultimap methods of AppointmentIntervalList used, 
beside within the implementation of AppointmentIntervalList itself.
So maybe using the follwing construct will work:

class AppointmentIntervalBase
{
// all your existing methods go here
private:
     QMultiMap<QDate, AppointmentInterval> m_data;
};

Ciao Jan



More information about the calligra-devel mailing list