之前学cocos2d-x时遇到很多问题,每次都要到网上搜罗半天才解决,但下次再遇到类似问题时又忘记是怎么回事了。所以我决定把自己遇到的问题记录下来,
1、cocos2d::xxx被声明为否决
>e:\haoyework\vs2012\plane\cocos2d\cocos\2d\platform\win32\CCFileUtilsWin32.h(102): warning C4996: 'cocos2d::FileUtils::getFileData': 被声明为已否决 (platform\win32\CCFileUtilsWin32.cpp)
1> E:\HaoyeWork\VS2012\plane\cocos2d\cocos\2d\platform/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:\haoyework\vs2012\plane\classes\HelloWorldScene.h(5): fatal error C1083: 无法打开包括文件:“cocostudio/CocoStudio.h”: No such file or directory (..\Classes\AppDelegate.cpp)
2>e:\haoyework\vs2012\plane\classes\HelloWorldScene.h(5): fatal error C1083: 无法打开包括文件:“cocostudio/CocoStudio.h”: No such file or directory (..\Classes\HelloWorldScene.cpp)
本来以为把头文件改成这样
#include "cocos2d/cocos/editor-support/cocostudio/CocoStudio.h"
就成了,没想到上面的解决了(不过这头文件路径这么长有点坑啊),但有出现了一堆类似的问题……
网上搜到的内容是导入libGUI.vcxproj libGUI.vcxproj libCocosStudio.vcxproj 这三个包,然后添加新引用,最后为项目添加附加包含目录 ——右键项目→属性→配置属性→C/C++,在右边的附加包含目录中编辑添加
$(EngineRoot)
$(EngineRoot)cocos
$(EngineRoot)cocos\editor-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:\Windows\system32\zh-CN\erofflps.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:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\base\ccutils.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:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\2d\cclabel.h(276): warning C4244: 'return' : conversion from 'float' to 'int',possible loss of data
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(50): error C2059: Syntax error : 'constant'
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(62): error C2143: Syntax error : missing ';' before '}'
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(62): error C2238: unexpected token(s) preceding ';'
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(68): error C2588: '::~ApplicationProtocol' : illegal global destructor
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(68): error C2575: 'ApplicationProtocol' : only member functions and bases can be virtual
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(68): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(74): warning C4508: 'cocos2d::ApplicationProtocol' : function should return a value; 'void' return type assumed
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(83): error C2575: 'applicationDidFinishLaunching' : only member functions and bases can be virtual
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.h(83): error C2059: Syntax error : 'constant'
3>e:\haoyework\vs2013\cocosmfctest\cocosmfctest\cocos2d\cocos\platform\ccapplicationprotocol.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 即可