我已经解决了这个问题差不多一个星期了,我还有700多个错误。绝对需要你的帮助!感谢。
问题:需要使用
Windows Phone 8的Cocos2dx
在我的 C ++ / DirectX Visual Studio 2012项目中,该项目也使用C#/ XAML UI。
鉴于:Cocos2dx-wp8作为从http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download下载的Application .exe项目
解决方案:
点击属性 - >配置属性 - >一般 - >配置类型 - >来自"应用程序(.exe)更改为"动态库(.dll)"
添加了属性的新路径 - > C / C ++ - >其他包含目录 - >
$(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 \平台; INC; %(AdditionalIncludeDirectories)
.. \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \库\ 86 \ freetype.lib; .. \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \库\ 86 \ zlib.lib; .. \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \库\ 86 \ libjpeg.lib; .. \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \库\ 86 \ libpng.lib; DXGUID.LIB; xaudio2.lib; dxgi.lib; UUID.LIB; d3d11.lib;%(AdditionalDependencies)
$(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \ freetype的; $(SolutionDir); $(PROJECTDIR)公司; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ CocosDenshion \包括: $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \ zlib的; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \库; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \ libpng的; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \的libjpeg; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \ libxml2的; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台\ THIRD_PARTY \ win8_metro \; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台\ win8_metro; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台; $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \包括: $(SolutionDir)GameWp8Dx \ Cocos2dxWp8 \ cocos2dx; $(INCLUDEPATH)
从这里开始,它构建成功! 它输出.dll文件,但没有.lib文件,所以......
在CCPlatformMacros.h中,我启用了将类导出到dll:
#define 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 Cocos2dXWp8Framework错误774错误LNK2001:未解析的外部 符号" public:virtual __thiscall 的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 Cocos2dXWp8Framework错误775错误LNK2001:未解析的外部 符号" public:virtual __thiscall 的cocos2d :: CCKeypadHandler ::〜CCKeypadHandler(无效)" (?? 1CCKeypadHandler @ @@的cocos2d UAE @ XZ) F:\ SRC \ WindowsPhone的\ GameWp8Dx \ GameWp8Dx \ Cocos2dxWp8 \ HelloWorld的\ CCImage_win8_metro.obj Cocos2dXWp8Framework
...
错误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 Cocos2dXWp8Framework错误1483错误LNK2001:未解析的外部 符号" 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错误1484错误LNK2019:未解析的外部 符号" public:virtual __thiscall 的cocos2d :: CCKeypadDispatcher ::〜CCKeypadDispatcher(无效)" (?? 1CCKeypadDispatcher @ cocos2d @ UAE @XZ)在函数" public中引用: virtual void * __thiscall cocos2d :: CCKeypadDispatcher ::`vector 删除析构函数'(unsigned int)" (?? _ ECCKeypadDispatcher @ @的cocos2d @ UAEPAXI Z) F:\ SRC \ WindowsPhone的\ GameWp8Dx \ GameWp8Dx \ Cocos2dxWp8 \ HelloWorld的\ CCDirector.obj Cocos2dXWp8Framework错误1485错误LNK2001:未解析的外部 符号" public:virtual __thiscall 的cocos2d :: CCKeypadDispatcher ::〜CCKeypadDispatcher(无效)" (?? 1CCKeypadDispatcher @ @的cocos2d UAE @ XZ) F:\ SRC \ WindowsPhone的\ GameWp8Dx \ GameWp8Dx \ Cocos2dxWp8 \ HelloWorld的\ CCLayer.obj Cocos2dXWp8Framework错误1486错误LNK2001:未解析的外部 符号" public:virtual __thiscall 的cocos2d :: CCKeypadDispatcher ::〜CCKeypadDispatcher(无效)" (?? 1CCKeypadDispatcher @ @的cocos2d UAE @ XZ) F:\ SRC \ WindowsPhone的\ GameWp8Dx \ GameWp8Dx \ Cocos2dxWp8 \ HelloWorld的\ CCEGLView_win8_metro.obj Cocos2dXWp8Framework错误1487错误LNK1120:48个未解析的外部 F:\ SRC \ WindowsPhone的\ GameWp8Dx \ GameWp8Dx \ Cocos2dxWp8 \ WIN32 \调试\ 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 \包括 F:\ SRC \的WindowsPhone \ GameWp8Dx \ GameWp8Dx \ Cocos2dxWp8 \ cocos2dx \平台
此处构建的对象文件:
F:\ SRC \的WindowsPhone \ GameWp8Dx \ GameWp8Dx \ Cocos2dxWp8 \的HelloWorld \的Win32 \调试* .OBJ
.dll / .lib在此处构建:
F:\ SRC \的WindowsPhone \ GameWp8Dx \ GameWp8Dx \ Cocos2dxWp8 \的Win32 \调试\ cocos2d的
很抱歉这篇长篇文章,但我希望有足够的细节来解决这个问题。感谢。
答案 0 :(得分:1)
我创建了一个新的动态库项目,然后复制了文件。我建立了.dll和.lib,但是没有用于ARM CPU构建目标(用于设备)。此外,Cocos2dx控制器和场景图层的设置似乎不适用于现有的带有DirectX项目的C#/ XAML渲染到DrawingSurfaceBackgroundGrid控件上。所以最后,我并没有在我的混合项目设置中使用Cocos2dx。
如果有其他人得到更好的建议,请告诉我。感谢。
答案 1 :(得分:0)
ON主题: 也许您没有在SLN中正确设置项目依赖项?
我让Cocos2d部分使用XAML + D3d Interop,但由于调用从XAMLComponent DLL返回并转发到Cocos2d DLL,它似乎搞乱了指针和内存。 现在我试图将所有Cocos2D源文件移动到我的D3Dcomponent项目中,但是有些东西非常错误,我得到了一个奇怪的kernelbase.dll第一次机会异常。
OFF主题: 我还尝试在XAML + D3D Interop项目上完成cocos2d-x上的游戏,并使用Visual Studio 2012附带的模板。但是,只显示了一个脏污的背景。我正在使用DrawingSurfaceBackgroundGrid,后来发现在Windows Phone 8上,它有一些与Z-order相关的问题。我最终用DrawingSurface替换它了。