注:针对3.2及以前版本,3.3以后不需要引入CocosStudio库
文章转载自:http://www.cocoachina.com/bbs/read.php?tid=194668
今天用3.2版本打开以前的项目,出现了许多错误,错误如下:
7>Loginsc.obj : error LNK2001: 无法解析的外部符号 "public: __thiscall cocos2d::ui::Margin::Margin(void)" (??0Margin@ui@cocos2d@@QAE@XZ)
7>Loginsc.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall cocos2d::ui::Widget::addTouchEventListener(class cocos2d::Ref *,void (__thiscall cocos2d::Ref::*)(class cocos2d::Ref *,enum cocos2d::ui::TouchEventType))" (?addTouchEventListener@Widget@ui@cocos2d@@QAEXPAVRef@3@P843@AEX0W4TouchEventType@23@@Z@Z),该符号在函数 "public: virtual void __thiscall LoginSC::onEnter(void)" (?onEnter@LoginSC@@UAEXXZ) 中被引用
7>Loginsc.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall cocos2d::ui::TextField::addEventListenerTextField(class cocos2d::Ref *,void (__thiscall cocos2d::Ref::*)(class cocos2d::Ref *,enum cocos2d::ui::TextFiledEventType))" (?addEventListenerTextField@TextField@ui@cocos2d@@QAEXPAVRef@3@P843@AEX0W4TextFiledEventType@23@@Z@Z),该符号在函数 "public: virtual void __thiscall LoginSC::onEnter(void)" (?onEnter@LoginSC@@UAEXXZ) 中被引用
7>Loginsc.obj : error LNK2019: 无法解析的外部符号 "public: static class cocos2d::ui::Widget * __cdecl cocos2d::ui::Helper::seekWidgetByName(class cocos2d::ui::Widget *,char const *)" (?seekWidgetByName@Helper@ui@cocos2d@@SAPAVWidget@23@PAV423@PBD@Z),该符号在函数 "public: virtual void __thiscall LoginSC::onEnter(void)" (?onEnter@LoginSC@@UAEXXZ) 中被引用
7>Loginsc.obj : error LNK2019: 无法解析的外部符号 "public: static void __cdecl cocostudio::ActionManagerEx::destroyInstance(void)" (?destroyInstance@ActionManagerEx@cocostudio@@SAXXZ),该符号在函数 "public: virtual void __thiscall LoginSC::onExit(void)" (?onExit@LoginSC@@UAEXXZ) 中被引用
7>Loginsc.obj : error LNK2019: 无法解析的外部符号 "public: static class cocostudio::GUIReader * __cdecl cocostudio::GUIReader::getInstance(void)" (?getInstance@GUIReader@cocostudio@@SAPAV12@XZ),该符号在函数 "public: virtual void __thiscall LoginSC::onEnter(void)" (?onEnter@LoginSC@@UAEXXZ) 中被引用
7>Loginsc.obj : error LNK2019: 无法解析的外部符号 "public: static void __cdecl cocostudio::GUIReader::destroyInstance(void)" (?destroyInstance@GUIReader@cocostudio@@SAXXZ),该符号在函数 "public: virtual void __thiscall LoginSC::onExit(void)" (?onExit@LoginSC@@UAEXXZ) 中被引用
7>Loginsc.obj : error LNK2019: 无法解析的外部符号 "public: class cocos2d::ui::Widget * __thiscall cocostudio::GUIReader::widgetFromJsonFile(char const *)" (?widgetFromJsonFile@GUIReader@cocostudio@@QAEPAVWidget@ui@cocos2d@@PBD@Z),该符号在函数 "public: virtual void __thiscall LoginSC::onEnter(void)" (?onEnter@LoginSC@@UAEXXZ) 中被引用
7>Loginsc.obj : error LNK2019: 无法解析的外部符号 "public: static void __cdecl cocostudio::SceneReader::destroyInstance(void)" (?destroyInstance@SceneReader@cocostudio@@SAXXZ),该符号在函数 "public: virtual void __thiscall LoginSC::onExit(void)" (?onExit@LoginSC@@UAEXXZ) 中被引用
7>E:\CHY_GPRO\aabb\proj.win32\Debug.win32\aabb.exe : fatal error LNK1120: 9 个无法解析的外部命令
从错误中看出少了cocostudio这个第三方库,那下面就给项目添加这个库:
第一步:往项目中添加这三个项目:
cocos2d\cocos\editor-support\cocostudio\proj.win32\libCocosStudio.vcxproj
cocos2d\extensions\proj.win32\libExtensions.vcxproj
Ccocos2d\cocos\ui\proj.win32\libGUI.vcxproj
第二步:
给新加进来的项目添加引用
第三步:
选择项目右键"配置属性" => "C/C++" => "附加包含目录" 并编辑.
添加下面几行
$(EngineRoot)cocos
$(EngineRoot)extensions
$(EngineRoot)cocos\editor-support\
$(EngineRoot)cocos\editor-support\cocostudio
再次编译就OK了!