Visual c++ 如何将Cocos2dx-wp8从应用程序(.exe)移植到动态库(.dll)

Visual c++ 如何将Cocos2dx-wp8从应用程序(.exe)移植到动态库(.dll),visual-c++,dll,cocos2d-x,dllexport,windows-phone-8,Visual C++,Dll,Cocos2d X,Dllexport,Windows Phone 8,我已经研究这个问题将近一个星期了,我仍然有700多个错误。绝对需要你的帮助!谢谢 问题:需要使用 适用于Windows Phone 8的Cocos2dx 在我的C++/DirectXVisual Studio 2012项目中,该项目也使用C#/XAML UI 给定:Cocos2dx-wp8作为Application.exe项目从 解决方案: 在Visual Studio 2012中打开我的C#/XAML/DirectX Game1 solution.sln项目 右键单击解决方案资源管理器中的解决

我已经研究这个问题将近一个星期了,我仍然有700多个错误。绝对需要你的帮助!谢谢

问题:需要使用

适用于Windows Phone 8的Cocos2dx

在我的C++/DirectXVisual Studio 2012项目中,该项目也使用C#/XAML UI

给定:Cocos2dx-wp8作为Application.exe项目从

解决方案

  • 在Visual Studio 2012中打开我的C#/XAML/DirectX Game1 solution.sln项目
  • 右键单击解决方案资源管理器中的解决方案。添加-->现有项目
  • 选中:\cocos2dx-0.13.0-wp8-0.8\HelloWorld\cocos2d.vcxproj并单击打开
  • 将HelloWorld项目重命名为类似“Cocos2dxWp8”的其他项目,并删除HelloWorld Classes文件夹和所有您不需要的资产(如松鼠和背景图像)
  • 单击属性-->配置属性-->常规-->配置类型-->从“应用程序(.exe)更改为“动态库(.dll)”

  • 为属性-->C/C++-->添加了新路径--其他包含目录-->

  • $(ProjectDir);$(IntermediateOutputPath);..\cocos2dx\include; ..\cocos2dx;。\cocos2dx\platform\third\u party\win8\u metro\libpng; ..\cocos2dx\platform\third\u party\win8\u metro\zlib; ..\cocos2dx\platform\third\u party\win8\u metro;…\Cocos2dxWp8; ..\cocos2dx\platform\win8\u metro; ..\cocos2dx\platform\third\u party\win8\u metro\freetype; ..\cocos2dx\platform\third\u party\win8\u metro\libjpeg; ..\CocosDenshion\include;。\cocos2dx\platform;inc; %(其他包括董事)

  • 更新了属性-->链接器-->输入-->其他依赖项-->
  • ..\cocos2dx\platform\third\u party\win8\u metro\libraries\x86\freetype.lib; ..\cocos2dx\platform\third\u party\win8\u metro\libraries\x86\zlib.lib; ..\cocos2dx\platform\third\u party\win8\u metro\libraries\x86\libjpeg.lib; ..\cocos2dx\platform\third\u party\win8\u metro\libraries\x86\libpng.lib; dxguid.lib;xaudio2.lib;dxgi.lib;uuid.lib;d3d11.lib;%(附加依赖项)

  • VC++目录中的更新路径:
  • $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third\u party\win8\u metro\freetype; $(SolutionDir);$(ProjectDir)公司; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\CocosDenshion\include; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third\u party\win8\u metro\zlib; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third\u party\win8\u metro\libraries; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third\u party\win8\u metro\libpng; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third\u party\win8\u metro\libjpeg; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third\u party\win8\u metro\libxml2; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\third\u party\win8\u metro\; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform\win8\u metro; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\platform; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\include; $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx;$(IncludePath)

    从这里开始,它成功构建! 它输出一个.dll文件,但没有.lib文件,所以

  • 在CCPlatformMacros.h中,我启用了将类导出到dll:

    #定义CC_DLL__declspec(dllexport)

  • 是的,.lib正在写入到

    715个错误,772个警告

    错误773错误LNK2001:未解析的外部符号“公共:虚拟 __此调用cocos2d::CCKeypadHandler::~CCKeypadHandler(void)”(?)??1CCKeypadHandler@cocos2d@UAE@XZ) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCSpriteBatchNode.obj COCOS2DXWP8框架错误774错误LNK2001:未解析的外部 符号“public:virtual\u thistcall” cocos2d::CCKeypadHandler::~CCKeypadHandler(无效)” (??1CCKeypadHandler@cocos2d@UAE@XZ)

    我已经包含了定义CCKeyHandler类的头文件(在CCKeypadDelegate.h内),CCSpriteBatchNode.h也在同一个include文件夹中

    类签名如下所示:

    class CC_DLL CCKeypadHandler : public CCObject
    class CC_DLL CCSpriteBatchNode : public CCNode, public CCTextureProtocol
    
    错误仍在继续

    F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\cocos2dorig.obj COCOS2DXWP8框架错误775错误LNK2001:未解析的外部 符号“public:virtual\u thistcall” cocos2d::CCKeypadHandler::~CCKeypadHandler(无效)” (??1CCKeypadHandler@cocos2d@@UAE@XZ) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCImage\u win8\u metro.obj Cocos2dXWp8Framework

    错误1482错误LNK2001:未解析的外部符号“public:virtual” void uu thiscall cocos2d::CCTMXMapInfo::textHandler(void*,char const *,int)“(?textHandler@CCTMXMapInfo@cocos2d@UAEXPAXPBDH@Z) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCDrawingPrimitives.obj COCOS2DXWP8框架错误1483错误LNK2001:未解析的外部错误 符号“public:virtualvoid\uu thiscall” cocos2d::CCTMXMapInfo::textHandler(void*,char const*,int)” (?textHandler@CCTMXMapInfo@cocos2d@UAEXPAXPBDH@Z) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\cocos2d.obj COCOS2DXWP8框架错误1484错误LNK2019:未解析的外部 符号“public:virtual\u thistcall” cocos2d::CCKeypadDispatcher::~CCKeypadDispatcher(无效)” (??1CCKeypadDispatcher@cocos2d@UAE@XZ)在“公共”功能中引用: 虚拟void*\uuu thiscall cocos2d::CCKeypadDispatcher::`vector 正在删除析构函数“(无符号整数)” (??_ECCKeypadDispatcher@cocos2d@UAEPAXI@Z) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCDirector.obj COCOS2DXWP8框架错误1485错误LNK2001:未解析的外部错误 符号“public:virtual\u thistcall” cocos2d::CCKeypadDispatcher::~CCKeypadDispatcher(无效)” (??1CCKeypadDispatcher@cocos2d@UAE@XZ) F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCLayer.obj Cocos2dXW