当前位置: 首页 > 知识库问答 >
问题:

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

景建业
2023-03-14

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

问题:需要使用

适用于Windows Phone 8的Cocos2dx

在我的C/DirectX Visual Studio 2012项目中,它也使用C#/XAML UI。

给定:Cocos2dx-wp8作为应用程序。exe项目html" target="_blank">下载自http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download

解决方案:

>

  • 打开我的C#/XAML/DirectX Game1解决方案。Visual Studio 2012中的sln项目
  • 右键单击解决方案资源管理器中的解决方案。加上--

    为属性添加了新路径--

    $(ProjectDir);$(IntermediateOutputPath);...\cocos2dx\包含;...\cocos2dx;...\cocos2dx\平台\third_party\win8_metro\libpng;...\cocos2dx\平台\third_party\win8_metro\zlib;...\cocos2dx\平台\third_party\win8_metro;...\Cocos2dxWp8;...\cocos2dx\平台\win8_metro;...\cocos2dx\平台\third_party\win8_metro\freetype;...\cocos2dx\平台\third_party\win8_metro\libjpeg;...\CocosDenshion\包含;...\cocos2dx\平台;公司;%(附加目录)

    1. 更新了属性中的路径--

    ...\cocos2dx\平台\third_party\win8_metro\库\x86\freetype.lib;...\cocos2dx\平台\third_party\win8_metro\库\x86\zlib.lib;...\cocos2dx\平台\third_party\win8_metro\库\x86\libjpeg.lib;...\cocos2dx\平台\third_party\win8_metro\库\x86\libpng.lib;dxguid.lib;xaudio2.lib;dxgi.lib;uuid.lib;d3d11.lib;%(附加依赖)

    1. VC目录中的更新路径:

    $(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\Platform\third_party\win8_metro\freetype;$(SolutionDir);$(ProjectDir)inc;$(SolutionDir)GameWp8Dx\Cocos2dxWp8\CocosDenshion\包含;$(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\Platform\third_party\win8_metro\zlib;$(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\Platform\third_party\win8_metro\库;$(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\Platform\third_party\win8_metro\libpng;$(SolutionDir)GameWp8Dx\Cocos2dxWp8\cocos2dx\Platform\third_party\win8_metro\li

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

    >

    #定义CC_DLL__declspec(dllexport)

    是啊。lib正在被写入。。。

    715错误,772警告

    错误773错误LNK2001:未解析的外部符号“public:virtual _thiscall cocos2d::CCKeypadHandler::~CCKeypadHandler(void)”(??1CCKeypadHandler@cocos2d@UAE@XZ)F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCSpriteBatchNode。obj COCOS2DXWP8框架错误774错误LNK2001:未解析的外部符号“public:virtual _uthiscall cocos2d::CCKeypadHandler::~CCKeypadHandler(void)”(??1CCKeypadHandler@cocos2d@UAE@XZ)

    我已经包含了定义CCKeyHandler类的头文件(在CCKeypadServer. 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 COCOS2DxWP8框架错误775错误LNK2001:未解析的外部符号“public:virtual _thiscall cocos2d::CCKeypadHandler::~CCKeypadHandler(void)”(??1CCKeypadHandler@cocos2d@@UAE@XZ)F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCImage\u win8\u metro。obj CoCos2DxWP8框架

    ...

    错误1482错误LNK2001:未解析的外部符号“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 COCOS2DxWP8框架错误1483错误LNK2001:未解析的外部符号“public:virtual void _thiscall COCOCOS2D::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 _thiscall CoCoCos2D::CCKeypadDispatcher::~CCKeypadDispatcher(void)”(?)??1CCKeypadDispatcher@cocos2d@UAE@XZ)函数“public:virtual void*_thiscall cocos2d::CCKeypadDispatcher::`vector deleting destructor'(unsigned int)”(?)_ECCKeypadDispatcher@cocos2d@UAEPAXI@Z)F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCDirector。obj CoCos2DxWP8框架错误1485错误LNK2001:未解析的外部符号“public:virtual _thiscall CoCoCos2D::CCKeypadDispatcher::~CCKeypadDispatcher(void)”(?)??1CCKeypadDispatcher@cocos2d@UAE@XZ)F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCLayer。obj CoCos2DxWP8框架错误1486错误LNK2001:未解析的外部符号“public:virtual _uthiscall CoCoCos2D::CCKeypadDispatcher::~CCKeypadDispatcher(void)”(?)??1CCKeypadDispatcher@cocos2d@UAE@XZ)F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\CCEGLView\u win8\u metro。obj Cocos2dXWp8Framework错误1487错误LNK1120:48未解析的外部文件F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\Win32\Debug\cocos2d\cococos2dxWP8framework。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\cococos2dx\platform

    此处生成的对象文件:

    F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\HelloWorld\Win32\Debug*。obj

    .dll/。这里建的图书馆:

    F:\src\WindowsPhone\GameWp8Dx\GameWp8Dx\Cocos2dxWp8\Win32\调试\cocos2d

    抱歉发了这么长的帖子,但我希望这些细节足以让这个问题继续下去。谢谢

  • 共有2个答案

    胡博艺
    2023-03-14

    主题:也许你没有在SLN中正确设置项目依赖关系?

    我让Cocos2d部分使用XAML D3d Interop,但是因为调用从XAMLComponent DLL来回到Cocos2d DLL,它似乎弄乱了指针和内存。现在我试图将所有Cocos2D源文件移动到我的D3D组件项目,但有些事情非常不对劲,我得到了一个奇怪的kernelbase.dll第一次机会例外。

    离题:我还试图将一个通过cocos2d-x完成的游戏放到一个XAML D3D互操作项目中,并使用了Visual Studio 2012附带的模板。然而,只显示了一个模糊的背景。我使用DrawingSurfaceBackgroundGrid,后来发现在Windows Phone 8上,它有一些与Z顺序相关的问题。最后我用DrawingSurface替换了它。

    蒋阳华
    2023-03-14

    我创建了一个新的动态库项目,然后复制了这些文件。我拿到了。dll和。lib构建,但不适用于ARM CPU构建目标(用于设备)。此外,Cocos2dx director和场景层的设置似乎与现有的C#/XAML with DirectX项目不兼容,该项目渲染到DrawingSurfaceBackgroundGrid控件上。所以最后,我没有在我的混合项目设置中使用Cocos2dx。

    如果有人有更好的建议,请告诉我。谢谢。

     类似资料:
    • 问题内容: 将iPhone应用程序移植到Android的最有效方法是什么?我知道苹果不喜欢第三方非目标C平台为其平台生成代码…但是有没有可以将iPhone应用程序转换为Android友好代码的东西? 如果不是,那么人们如何为他们现有的iPhone应用程序创建Android版本? 谢谢 问题答案: 没有任何东西可以移植您的应用程序。您可以使用第三方工具来创建可同时在两者中使用的应用程序。这就是Tit

    • 我用xcode11运行我的应用程序,并且可以发布它。但是,我看到了苹果发布的下面这则公告; “从2021年4月开始,所有提交到应用商店的iOS和iPadOS应用都必须使用Xcode 12和iOS 14 SDK构建。” 我到底该怎么做?如果我下载Xcode12并运行我的应用程序,SDK会自动更新吗?安装iOS 14 SDK该怎么做? 或者我需要为我现有的豆荚“豆荚更新”吗?在我的项目“iOS部署目标

    • 问题内容: SqlCommand.ExecuteScalar方法 执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。 我猜这将涉及大量使用泛型。 假设我有一个SQLiteDatabase / Cursor对象。 问题答案: 这种逻辑对我有用:

    • 我需要将我的应用程序从sqlite移动到MySQL。我跟着那个向导 http://help.nitrous.io/mysql/ 安装了mysql,这是我的yaml文件 当我尝试执行时,我会遇到以下错误 无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地MySQL服务器(2) 无法为{“adapter”=>“mysql2”,“encoding”=>“utf8”,“da

    • Tomcat10最近发布了,并尝试简单地部署应用程序。由于Java EE 8使用javax.*包名称空间,而Tomcat10使用Java EE 9,后者使用jakarta.*名称空间,因此很难从Tomcat9迁移到10。有什么方法或工具可以做到这一点吗?我认为这对tomcat 7/8也是一样的。

    • 问题内容: 我有一个编写的节点应用程序,运行如下: 有什么办法可以将其本身打包为.exe?所以我可以做这样的事情吗? 我有一些通过使用批处理文件来伪造此方法的方法,因此我可以这样做: 但这要求我在该文件夹中拥有所有依赖项和节点,这并不理想。 问题答案: 有一些选择,包括免费和商业。我没有使用过它们,但理论上它们应该可以工作: Iexpress(本地Windows工具) 快速批处理文件编译器(商业)