下载新的cocos2dx 3.13,想使用simulator来运行lua项目,结果发现使用vs2013编译不通过。
1.
9>main.cpp(5): error C2146: 语法错误: 缺少“;”(在标识符“wWinMain”的前面)
9>main.cpp(9): warning C4007: “wWinMain”: 必须是“__stdcall”
9>main.cpp(9): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
解决办法:
将main.cpp里的第5行APIENTRY修改为WINAPI或者__stdcall
2.
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: 命令“if not exist "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\..\..\..\runtime" mkdir "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\..\..\..\runtime"
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073:
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: if not exist "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\..\..\..\runtime\win32" mkdir "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\..\..\..\runtime\win32"
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073:
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: xcopy /Y /Q "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\Debug.win32\*.dll" "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\..\..\..\runtime\win32"
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: xcopy /Y /Q "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\Debug.win32\*.exe" "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\..\..\..\runtime\win32"
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: xcopy /Y /Q "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\Debug.win32\lang" "D:\cocos2d-x-3.13\tools\simulator\frameworks\runtime-src\proj.win32\..\..\..\runtime\win32"
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073:
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: :VCEnd”已退出,代码为 4。
解决办法:
项目属性>生成事件>后期生成事件>命令行,将里面的最后一段:xcopy /Y /Q "$(OutDir)lang" "$(ProjectDir)..\..\..\runtime\win32" 删除(这个语言文件会在下面提到,如果这里不删除的话,将对应的lang文件拷贝到相应的地方也是可以的)
3.好,到目前为止,编译上的问题解决了。但是发现将simulator放到lua项目上使用不了啊,看代码发现对应脚本实现的start方法调用竟然没有了。
解决办法:(这个过程其实就是将旧引擎的整套东西搬过来)
下载旧的cocos2dx引擎(我的是3.10),将对应缺的文件和代码补上。
①将cocos2d-x-3.10\tools\simulator\frameworks\runtime-src\Classes\ide-support拷贝到对应新引擎文件夹里(里面包含了语言文件lang)
②将代码加入到simulator的工程里面去,由于我们只使用lua,所以只加lua到里面去(编译js的话好像有点问题,由于只使用lua所以将js的问题跳过了)
③将cocos2d-x-3.10\tools\simulator\frameworks\runtime-src\Classes\AppDelegate.cpp文件内容拷贝到新引擎对应的文件里去,并屏蔽js相关代码
OK,编译后放到lua项目中,正常运行了。