Skip to main content
Jeremy O
Participant
March 21, 2017
Answered

Link problem with threeview widget

  • March 21, 2017
  • 1 reply
  • 648 views

Hi everyone,

I'm beginner with InDesign Plug In programming and i'm trying to create a three view widget.

I think i did something wrong, i get about 30 linking error when compiling, if someone see something i missed it would be great to help...

here is the step i followed :

So i firstly defined a ClassID this way :

---------------------------------------------------------------------------------------------------------------------

DECLARE_PMID(kClassIDSpace, kMyPluginMessageListWidgetBoss, kMyPluginPrefix + 7)

---------------------------------------------------------------------------------------------------------------------

then i defined a type this way :

-----------------------------------------------------------------------------------------------------------------------

type MyPluginMessageListBox(kViewRsrcType) : TreeViewWidget(ClassID = kMyPluginMessageListWidgetBoss){ };

----------------------------------------------------------------------------------------------------------------------

then i described my threeviewwidgetboss and the implementations it will contain in classdescriptiontable :

----------------------------------------------------------------------------------------------------------------------

     Class

    {

        kMyPluginMessageListWidgetBoss

        kTreeViewWidgetBoss,

        {

            /** Furnishes application framework with widgets as needed

            */

            IID_ITREEVIEWWIDGETMGR,  kMyPluginMessageTreeViewWidgetMgrImpl,

            /** Adapts our data model to the needs of the application framework

            */

            IID_ITREEVIEWHIERARCHYADAPTER,  kMyPluginMessageTreeViewAdapterImpl,

            /**

               Implements the observer that receives the messages from the application

            when user clicks in the list box, see DCLSizListBoxObserver.

            */

            IID_IOBSERVER,  kMyPluginMessageListBoxObserverImpl,

        }

    },

----------------------------------------------------------------------------------------------------------------------

after all that i mentionned the implementation in the id.h (DECLARE_PMID) and in the factorylist (REGISTER_PMINTERFACE) and i finally created all the needed implementation.

i also added in the linker input the library WidgetBin.lib.

after a quick debug of the logical treatments, i get the followings linker errors (LNK 2001) :

debugger output :

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1>DAJMelodyPlugInListBoxObserver.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: __thiscall NodeID::~NodeID(void)" (__imp_??1NodeID@@QAE@XZ) référencé dans la fonction "void __cdecl K2destroy<class NodeID>(class NodeID *)" (??$K2destroy@VNodeID@@@@YAXPAVNodeID@@@Z)

1>DAJMelodyPlugInListBoxObserver.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: long __thiscall NodeID::GetNodeType(void)const " (__imp_?GetNodeType@NodeID@@QBEJXZ) référencé dans la fonction "public: virtual void __thiscall DAJMelodyPlugInListBoxObserver::Update(class IDType<struct ClassID_tag> const &,class ISubject *,class IDType<struct PMIID_tag> const &,void *)" (?Update@DAJMelodyPlugInListBoxObserver@@UAEXABV?$IDType@UClassID_tag@@@@PAVISubject@@ABV?$IDType@UPMIID_tag@@@@PAX@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "__declspec(dllimport) public: long __thiscall NodeID::GetNodeType(void)const " (__imp_?GetNodeType@NodeID@@QBEJXZ)

1>DAJMelodyPlugInListBoxObserver.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: class NodeIDClass * __thiscall NodeID::Get(void)const " (__imp_?Get@NodeID@@QBEPAVNodeIDClass@@XZ) référencé dans la fonction "public: virtual void __thiscall DAJMelodyPlugInListBoxObserver::Update(class IDType<struct ClassID_tag> const &,class ISubject *,class IDType<struct PMIID_tag> const &,void *)" (?Update@DAJMelodyPlugInListBoxObserver@@UAEXABV?$IDType@UClassID_tag@@@@PAVISubject@@ABV?$IDType@UPMIID_tag@@@@PAX@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "__declspec(dllimport) public: class NodeIDClass * __thiscall NodeID::Get(void)const " (__imp_?Get@NodeID@@QBEPAVNodeIDClass@@XZ)

1>DAJMelodyPlugInListBoxObserver.obj : error LNK2019: symbole externe non résolu "public: __thiscall DAJMelodyPlugInListBoxObserver::DAJMelodyPlugInListBoxObserver(class IPMUnknown *)" (??0DAJMelodyPlugInListBoxObserver@@QAE@PAVIPMUnknown@@@Z) référencé dans la fonction _CreatekDAJMelodyPlugInMessageListBoxObserverImpl_

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: __thiscall CTreeViewWidgetMgr::CTreeViewWidgetMgr(class IPMUnknown *,long)" (__imp_??0CTreeViewWidgetMgr@@QAE@PAVIPMUnknown@@J@Z) référencé dans la fonction "public: __thiscall DAJMelodyPlugInMessageTreeViewWidgetMgr::DAJMelodyPlugInMessageTreeViewWidgetMgr(class IPMUnknown *)" (??0DAJMelodyPlugInMessageTreeViewWidgetMgr@@QAE@PAVIPMUnknown@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: virtual __thiscall CTreeViewWidgetMgr::~CTreeViewWidgetMgr(void)" (__imp_??1CTreeViewWidgetMgr@@UAE@XZ) référencé dans la fonction "public: virtual void * __thiscall DAJMelodyPlugInMessageTreeViewWidgetMgr::`scalar deleting destructor'(unsigned int)" (??_GDAJMelodyPlugInMessageTreeViewWidgetMgr@@UAEPAXI@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall CTreeViewWidgetMgr::AddRef(void)const " (?AddRef@CTreeViewWidgetMgr@@UBEXXZ)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual void __thiscall CTreeViewWidgetMgr::ApplyHighlightToWidget(class NodeID const &,class IControlView *,long)const " (?ApplyHighlightToWidget@CTreeViewWidgetMgr@@MBEXABVNodeID@@PAVIControlView@@J@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual void __thiscall CTreeViewWidgetMgr::ApplyIndentToWidget(class NodeID const &,class IPanelControlData *,long)const " (?ApplyIndentToWidget@CTreeViewWidgetMgr@@MBEXABVNodeID@@PAVIPanelControlData@@J@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual short __thiscall CTreeViewWidgetMgr::ApplyNodeIDToWidget(class NodeID const &,class IControlView *,long)const " (?ApplyNodeIDToWidget@CTreeViewWidgetMgr@@UBEFABVNodeID@@PAVIControlView@@J@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual class IControlView * __thiscall CTreeViewWidgetMgr::CreateWidgetForNode(class NodeID const &)const " (?CreateWidgetForNode@CTreeViewWidgetMgr@@UBEPAVIControlView@@ABVNodeID@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual class PMReal __thiscall CTreeViewWidgetMgr::GetBaseIndentOffset(class IControlView *)const " (?GetBaseIndentOffset@CTreeViewWidgetMgr@@MBE?AVPMReal@@PAVIControlView@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual class PMReal __thiscall CTreeViewWidgetMgr::GetIndent(class NodeID const &)const " (?GetIndent@CTreeViewWidgetMgr@@MBE?AVPMReal@@ABVNodeID@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual class PMReal __thiscall CTreeViewWidgetMgr::GetIndentForNode(class NodeID const &)const " (?GetIndentForNode@CTreeViewWidgetMgr@@UBE?AVPMReal@@ABVNodeID@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual class PMReal __thiscall CTreeViewWidgetMgr::GetNodeWidgetHeight(class NodeID const &)const " (?GetNodeWidgetHeight@CTreeViewWidgetMgr@@UBE?AVPMReal@@ABVNodeID@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual class PMReal __thiscall CTreeViewWidgetMgr::GetNodeWidgetWidth(class NodeID const &)const " (?GetNodeWidgetWidth@CTreeViewWidgetMgr@@UBE?AVPMReal@@ABVNodeID@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual long __thiscall CTreeViewWidgetMgr::GetStyle(void)const " (?GetStyle@CTreeViewWidgetMgr@@UBEJXZ)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual class PMReal __thiscall CTreeViewWidgetMgr::GetTreeViewWidth(void)const " (?GetTreeViewWidth@CTreeViewWidgetMgr@@MBE?AVPMReal@@XZ)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual class IDType<struct WidgetID_tag> __thiscall CTreeViewWidgetMgr::GetWidgetTypeForNode(class NodeID const &)const " (?GetWidgetTypeForNode@CTreeViewWidgetMgr@@UBE?AV?$IDType@UWidgetID_tag@@@@ABVNodeID@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual void __thiscall CTreeViewWidgetMgr::HideExpanderIfNotExpandable(class NodeID const &,class IPanelControlData *,long)const " (?HideExpanderIfNotExpandable@CTreeViewWidgetMgr@@MBEXABVNodeID@@PAVIPanelControlData@@J@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "private: virtual void __thiscall CTreeViewWidgetMgr::InternalSetStyle(long)" (?InternalSetStyle@CTreeViewWidgetMgr@@EAEXJ@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual short __thiscall CTreeViewWidgetMgr::IsOptionSet(enum CTreeViewWidgetMgr::Options)const " (?IsOptionSet@CTreeViewWidgetMgr@@MBEFW4Options@1@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "private: virtual void __thiscall CTreeViewWidgetMgr::LazyRegisterStyles(void)const " (?LazyRegisterStyles@CTreeViewWidgetMgr@@EBEXXZ)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall CTreeViewWidgetMgr::PreDeleteWidget(class IControlView *)" (?PreDeleteWidget@CTreeViewWidgetMgr@@UAEXPAVIControlView@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual class IPMUnknown * __thiscall CTreeViewWidgetMgr::QueryInterface(class IDType<struct PMIID_tag>)const " (?QueryInterface@CTreeViewWidgetMgr@@UBEPAVIPMUnknown@@V?$IDType@UPMIID_tag@@@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual void __thiscall CTreeViewWidgetMgr::RegisterStyleWidget(long,unsigned long,class IDType<struct PluginID_tag>)" (?RegisterStyleWidget@CTreeViewWidgetMgr@@MAEXJKV?$IDType@UPluginID_tag@@@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall CTreeViewWidgetMgr::Release(void)const " (?Release@CTreeViewWidgetMgr@@UBEXXZ)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual void __thiscall CTreeViewWidgetMgr::SetNodeIcon(class IPanelControlData *,unsigned long,class IDType<struct PluginID_tag>,class IDType<struct WidgetID_tag>)const " (?SetNodeIcon@CTreeViewWidgetMgr@@MBEXPAVIPanelControlData@@KV?$IDType@UPluginID_tag@@@@V?$IDType@UWidgetID_tag@@@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "protected: virtual void __thiscall CTreeViewWidgetMgr::SetNodeName(class IPanelControlData *,class PMString const &,class IDType<struct WidgetID_tag>)const " (?SetNodeName@CTreeViewWidgetMgr@@MBEXPAVIPanelControlData@@ABVPMString@@V?$IDType@UWidgetID_tag@@@@@Z)

1>DAJMelodyPlugInMessageTreeViewWidgetMgr.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall CTreeViewWidgetMgr::SetStyle(long)" (?SetStyle@CTreeViewWidgetMgr@@UAEXJ@Z)

1>..\debug\sdk\DAJMelodyPlugin.sdk.pln : fatal error LNK1120: 30 externes non résolus

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Thanks for reading if you see something i did wrong or missed in the way please inform me !

Have a nice day.

Jeremy

This topic has been closed for replies.
Correct answer Manan Joshi

Link to DV_WidgetBin.lib as well, the definitions for methods in CTreeViewWidgetMgr are defined in this library

-Manan

1 reply

Manan JoshiCommunity ExpertCorrect answer
Community Expert
March 22, 2017

Link to DV_WidgetBin.lib as well, the definitions for methods in CTreeViewWidgetMgr are defined in this library

-Manan

-Manan
Jeremy O
Jeremy OAuthor
Participant
March 23, 2017

It's solved, you were right ,it was the library that was missing !

Thanks a lot !

Regards,

Jeremy