之前学cocos2d-x时遇到很多问题,每次都要到网上搜罗半天才解决,但下次再遇到类似问题时又忘记是怎么回事了。所以我决定把自己遇到的问题记录下来,
1、cocos2d::xxx被声明为否决
>e:haoyeworkvs2012planecocos2dcocos2dplatformwin32CCFileUtilsWin32.h(102): warning C4996: 'cocos2d::FileUtils::getFileData': 被声明为已否决 (platformwin32CCFileUtilsWin32.cpp)
1> E:HaoyeWorkVS2012planecocos2dcocos2dplatform/CCFileUtils.h(101) : 参见“cocos2d::FileUtils::getFileData”的声明
解决办法:在网上搜到这个:vs认为你的xxx是不安全的 加个编译选项就可以了。于是按 Alt+F7打开项目属性,点击“capturedata属性”,找到“配置属性” -> “C/C++” -> “命令行”,
在右侧的“附加选项”文本编辑框里加入 【/D "_CRT_SECURE_NO_DEPRECATE" 】(注意加入的是【】符号里面的文本),
点确定。再次编译,就没有这种警告了。
(http://zhidao.baidu.com/link?url=B1PFLU8cruYPHrx51DKUwn4yv4KjZOAqfO7N43vKDEVlbpYa_gV4lVVEa0pSqIJg70InQWf0I68cLtPrKk-UFa)
问题解决,而且之前很多相应的警告都随之消失,但感觉只是把警告隐藏起来而已,警告依然存在
2、无法打开包括文件
2>e:haoyeworkvs2012planeclassesHelloWorldScene.h(5): fatal error C1083: 无法打开包括文件:“cocostudio/CocoStudio.h”: No such file or directory (..ClassesAppDelegate.cpp) 2>e:haoyeworkvs2012planeclassesHelloWorldScene.h(5): fatal error C1083: 无法打开包括文件:“cocostudio/CocoStudio.h”: No such file or directory (..ClassesHelloWorldScene.cpp)
本来以为把头文件改成这样
#include "cocos2d/cocos/editor-support/cocostudio/CocoStudio.h"
就成了,没想到上面的解决了(不过这头文件路径这么长有点坑啊),但有出现了一堆类似的问题……
网上搜到的内容是导入libGUI.vcxproj libGUI.vcxproj libCocosStudio.vcxproj 这三个包,然后添加新引用,最后为项目添加附加包含目录 ——右键项目→属性→配置属性→C/C++,在右边的附加包含目录中编辑添加
$(EngineRoot)
$(EngineRoot)cocos
$(EngineRoot)cocoseditor-support
然后就头文件的错误就没了…………我记得之前我已经添加过了,,,,,
3、默认库“libcmt.lib”与其他库的使用冲突
2>MSVCRT.lib(cinitexe.obj) : warning LNK4098: 默认库“libcmt.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
解决办法:
http://blog.csdn.net/pgmsoul/article/details/4203941/
4、双击.exe文件时无法运行
问题签名: 问题事件名称: APPCRASH 应用程序名: plane.exe 应用程序版本: 1.0.0.1 应用程序时间戳: 55adbfbf 故障模块名称: plane.exe 故障模块版本: 1.0.0.1 故障模块时间戳: 55adbfbf 异常代码: c0000005 异常偏移: 000033d8 OS 版本: 6.1.7601.2.1.0.256.1 区域设置 ID: 2052 其他信息 1: 0a9e 其他信息 2: 0a9e372d3b4ad19135b953a78882e789 其他信息 3: 0a9e 其他信息 4: 0a9e372d3b4ad19135b953a78882e789 联机阅读隐私声明: http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804 如果无法获取联机隐私声明,请脱机阅读我们的隐私声明: D:Windowssystem32zh-CNerofflps.txt
---------------------------------------------------------------------------------------------------------------------------------
解决办法:
缺少资源文件,将Resource文件夹下面的文件全部拷贝到与.exe文件同级的目录下.
5、关于“stdafx.h”
如果将头文件做如下声明:
#include <iostream> #include <fstream> #include "FileTest.h" #include "stdafx.h"
则会出现如下错误:
error C2065: “ofstream”: 未声明的标识符
error C2146: 语法错误: 缺少“;”(在标识符“fout”的前面)
error C2065: “endl”: 未声明的标识符
.........
解决办法:
将头文件“stdafx.h”声明在前面:
#include "stdafx.h"
#include <iostream> #include <fstream> #include "FileTest.h"
6、使用cocos2d-x 3.x渲染MFC窗口时,error C2059:syntax error:'contant' .......几十上百个错误....
3> Compiling... 3> CocosMFCTestDlg.cpp 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosbaseccutils.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocos2dcclabel.h(276): warning C4244: 'return' : conversion from 'float' to 'int',possible loss of data 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(50): error C2059: syntax error : 'constant' 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(62): error C2143: syntax error : missing ';' before '}' 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(62): error C2238: unexpected token(s) preceding ';' 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(68): error C2588: '::~ApplicationProtocol' : illegal global destructor 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(68): error C2575: 'ApplicationProtocol' : only member functions and bases can be virtual 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(68): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(74): warning C4508: 'cocos2d::ApplicationProtocol' : function should return a value; 'void' return type assumed 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(83): error C2575: 'applicationDidFinishLaunching' : only member functions and bases can be virtual 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(83): error C2059: syntax error : 'constant' 3>e:haoyeworkvs2013cocosmfctestcocosmfctestcocos2dcocosplatformccapplicationprotocol.h(90): error C2575: 'applicationDidEnterBackground' : only member functions and bases can be virtual
解决办法:
原来是因为CCApplicationProtocol.h文件中的 OS_WINDOWS 和 shlapi.h 中的 OS_WINDOWS 名称冲突了,
在CCApplicationProtocol.h文件中加一句#undef OS_WINDOWS 即可 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|