我已经解决这个问题将近一周了,但我仍然有 700 多个错误。绝对需要你的帮助!谢谢。
问题:需要使用
适用于 Windows Phone 8 的 Cocos2dx
在我的C++/DirectX Visual Studio 2012 项目中,该项目也使用 C#/XAML UI。
给定:Cocos2dx-wp8 作为 Application .exe 项目从http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download下载
解决方案:
- 在 Visual Studio 2012 中打开我的 C#/XAML/DirectX Game1 解决方案 .sln 项目。
- 在解决方案资源管理器中右键单击解决方案。添加 --> 现有项目...
- 选中:\cocos2dx-0.13.0-wp8-0.8\HelloWorld\cocos2d.vcxproj 并点击打开
- 将 HelloWorld 项目重命名为“Cocos2dxWp8”之类的其他名称,并删除 HelloWorld Classes 文件夹和您不想要的所有资产(如松鼠和背景图像)
单击属性--> 配置属性--> 常规--> 配置类型--> 从“应用程序(.exe)更改为“动态库(.dll)”
添加了属性的新路径 --> C/C++ --> 附加包含目录 -->
$(项目目录); $(中间输出路径); ..\cocos2dx\包括;..\cocos2dx; ..\cocos2dx\platform\third_party\win8_metro\libpng; ..\cocos2dx\platform\third_party\win8_metro\zlib; ..\cocos2dx\平台\第三方\win8_metro;....\Cocos2dxWp8; ..\cocos2dx\平台\win8_metro;..\cocos2dx\platform\third_party\win8_metro\freetype; ..\cocos2dx\platform\third_party\win8_metro\libjpeg; ..\CocosDenshion\include; ..\cocos2dx\平台;公司;%(附加包含目录)
- 更新了 Properties --> Linker --> Input --> Additional Dependencies --> 中的路径
..\cocos2dx\platform\third_party\win8_metro\libraries\x86\freetype.lib; ..\cocos2dx\platform\third_party\win8_metro\libraries\x86\zlib.lib; ..\cocos2dx\platform\third_party\win8_metro\libraries\x86\libjpeg.lib; ..\cocos2dx\platform\third_party\win8_metro\libraries\x86\libpng.lib; dxguid.lib;xaudio2.lib;dxgi.lib;uuid.lib;d3d11.lib;%(AdditionalDependencies)
- 更新了 VC++ 目录中的路径:
$(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third_party\win8_metro\freetype; $(解决方案目录); $(项目目录)公司;$(SolutionDir)GameWp8Dx\Cocos2dxWp8\CocosDenshion\include; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third_party\win8_metro\zlib; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third_party\win8_metro\libraries; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third_party\win8_metro\libpng; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third_party\win8_metro\libjpeg; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third_party\win8_metro\libxml2; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third_party\win8_metro\; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\win8_metro; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform;$(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\include;$(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx; $(包含路径)
从这里,它构建成功! 它输出一个 .dll 文件但没有 .lib 文件,所以...
在 CCPlatformMacros.h 中,我启用了将类导出到 dll:
#define CC_DLL __declspec(dllexport)
是的,.lib 正在被写入...
715 个错误,772 个警告
错误 773 error LNK2001: unresolved external symbol "public: virtual __thiscall cocos2d:: CCKeypadHandler ::~CCKeypadHandler(void)" (??1CCKeypadHandler@cocos2d@UAE@XZ) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld \CCSpriteBatchNode.obj Cocos2dXWp8Framework Error 774 error LNK2001: 无法解析的外部符号“public: virtual __thiscall cocos2d::CCKeypadHandler::~CCKeypadHandler(void)” (??1CCKeypadHandler@cocos2d@UAE@XZ)
我已经包含了定义 CCKeyHandler 类的头文件(在 CCKeypadDelegate.h 中),并且 CCSpriteBatchNode.h 也在同一个包含文件夹中。
类签名如下所示:
class CC_DLL CCKeypadHandler : public CCObject
class CC_DLL CCSpriteBatchNode : public CCNode, public CCTextureProtocol
错误继续存在...
F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\cocos2dorig.obj Cocos2dXWp8Framework Error 775 error LNK2001: unresolved external symbol "public: virtual __thiscall cocos2d::CCKeypadHandler::~CCKeypadHandler(void)" (??1CCKeypadHandler@cocos2d @@UAE@XZ) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCImage_win8_metro.obj Cocos2dXWp8Framework
...
错误 1482 error LNK2001: unresolved external symbol "public: virtual void __thiscall cocos2d::CCTMXMapInfo::textHandler(void *,char const *,int)" (?textHandler@CCTMXMapInfo@cocos2d@UAEXPAXPBDH@Z) F:\src\WindowsPhone \GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCDrawingPrimitives.obj Cocos2dXWp8Framework Error 1483 error LNK2001: unresolved external symbol "public: virtual void __thiscall cocos2d::CCTMXMapInfo::textHandler(void *,char const *,int)" (?textHandler@CCTMXMapInfo @cocos2d@UAEXPAXPBDH@Z) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\cocos2d.obj Cocos2dXWp8Framework Error 1484 error LNK2019: unresolved external symbol "public: virtual __thiscall cocos2d::CCKeypadDispatcher::~CCKeypadDispatcher(void) “ (??1CCKeypadDispatcher@cocos2d@UAE@XZ) 在函数中引用”public: virtual void * __thiscall cocos2d::CCKeypadDispatcher::`向量删除析构函数'(unsigned int)" (??_ECCKeypadDispatcher@cocos2d@UAEPAXI@Z) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCDirector。 obj Cocos2dXWp8Framework Error 1485 error LNK2001: unresolved external symbol "public: virtual __thiscall cocos2d::CCKeypadDispatcher::~CCKeypadDispatcher(void)" (??1CCKeypadDispatcher@cocos2d@UAE@XZ) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8 \HelloWorld\CCLayer.obj Cocos2dXWp8Framework Error 1486 error LNK2001: unresolved external symbol "public: virtual __thiscall cocos2d::CCKeypadDispatcher::~CCKeypadDispatcher(void)" (??1CCKeypadDispatcher@cocos2d@UAE@XZ) F:\src\WindowsPhone\ GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCEGLView_win8_metro。obj Cocos2dXWp8Framework Error 1487 error LNK1120: 48 unresolved externals F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\Win32\Debug\cocos2d\Cocos2dXWp8Framework.dll Cocos2dXWp8Framework
解决方案/项目路径:
F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx.sln F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\GameWp8Dx\GameWp8Dx.csproj F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\GameWp8DxComponent\GameWp8DxComponent.vcxproj F:\src\WindowsPhone \GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\cocos2d.vcxproj
Cocos2d 包含文件:
F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\cocos2dx\include F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\cocos2dx\platform
此处构建的目标文件:
F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\Win32\Debug*.obj
.dll / .lib 在这里构建:
F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\Win32\Debug\cocos2d
抱歉,这篇文章很长,但我希望有足够的细节来解决这个问题。谢谢。