首先你必须是微软开发者账号(现在是免费的),现在的微软的账号(就是你安装win8 操作系统的时候叫你输入的账号)和开发者账号需要绑定的;









虽然库已经添加进来了,但是还应该有目录的,所以在“配置属性”下的“c/c++”目录下的“常规”选项中的“附加包含目录”添加:
这里我把目录列举出来,你们到时添加就行了:
$(EngineRoot)cocos\2d\platform\wp8
$(EngineRoot)cocos\2d\platform\winrt
$(EngineRoot)\external\winrt-specific\angle\include
$(EngineRoot)\external\winrt-specific
$(EngineRoot)cocos\2d
$(EngineRoot)cocos\math\kazmath
$(EngineRoot)cocos\audio\include
$(EngineRoot)cocos\2d\renderer
$(EngineRoot)cocos\ui
$(EngineRoot)cocos
$(EngineRoot)cocos\base
$(EngineRoot)cocos\physics
$(EngineRoot)external\chipmunk\include\chipmunk
$(EngineRoot)external
$(EngineRoot)cocos\editor-support
$(EngineRoot)
$(EngineRoot)cocos\math\kazmath\include
$(EngineRoot)cocos\deprecated
$(EngineRoot)external\win32-specific\gles\include\OGLES
$(EngineRoot)external\glfw3\include\win32
$(EngineRoot)cocos\scripting\lua-bindings\manual
$(EngineRoot)cocos\scripting\lua-bindings\auto
$(EngineRoot)cocos\scripting\lua-bindings\script
$(EngineRoot)external\lua
$(EngineRoot)external\lua\luajit\include
$(EngineRoot)external\lua\tolua
$(EngineRoot)external\libwebsockets\win32\include
$(EngineRoot)extensions\network
$(EngineRoot)extensions
$(EngineRoot)cocos\editor-support\spine
$(EngineRoot)cocos\editor-support\cocosbuilder
$(EngineRoot)cocos\editor-support\cocostudio
下面是配置完后的状态:
@3:然后是模仿quickv3中的libquickx来进行配置,我只上图,然后对应起来设置就行了
C/C++中的常规选择:
在C/C++中的预处理器这的预处理器定义中加入宏:
WP8
_LIB
_DEBUG
COCOS2D_DEBUG=1
CC_LUA_ENGINE_ENABLED=1
__STRICT_ANSI__
SQLITE_OS_WINRT
SQLITE_OMIT_WAL
CC_USE_JSON=1
CC_USE_CURL=1
CC_USE_CCS_ARMATURE=1
CC_USE_EXTRA_FILTERS=1
CC_USE_WEBSOCKET=1
CC_USE_TGA=1
CC_USE_SQLITE=1
如下:
然后在C/C++中的代码生成中设置:
然后在C/C++中的高级选择中设置:(强制包含文件手动输入pch.h)
@4:当然由于liblua项目中有c文件,我们必须把所以的c文件单独设置才行,否则就是无法解析的外部符号了。标记所以的c文件然后然后右击属性窗口来设置,如图:
.c文件在lua,Manual,tolua下面均有;
在c/c++中的常规中
在c/c++中的预编译头中设置:
然后在C/C++中的高级选择中设置:
@5:这时把平台设置为ARM,并且把liblua项目设置为启动项目,运行,等待。。。。。
现在主要是改cocos2dx3.0里的一些库:
Probelm1:..\..\..\..\..\cocos\scripting\lua-bindings\auto\lua_cocos2dx_auto.cpp(54393): error C2039: “createWithRect”: 不是“cocos2d::GLView”的成员:
在lua_cocos2dx_auto.cpp文件中
凡是遇到createWithRect调用的都注释掉;
如:
凡是遇到createWithFullScreen的都注释掉;
@6:运行项目(现在不管警告),如果有下面弹出窗口,恭喜你liblua库成功了,但是还会改库的(在后面):
@7:测试该项目:
在cpp-empty-testComponent项目中添加对liblua库的引用,一样右击cpp-empty-testComponent项目,在通用属性中添加新引用,把liblua库添加进来,而且
同样的要在C/C++常规中添加附加包含目录:
$(EngineRoot)cocos\scripting\lua-bindings\manual
$(EngineRoot)cocos\scripting\lua-bindings\auto
$(EngineRoot)cocos\scripting\lua-bindings\script
$(EngineRoot)external\lua
$(EngineRoot)external\lua\luajit\include
$(EngineRoot)external\lua\tolua
然后在AppDelegate.h中添加#include "CCLuaEngine.h"头文件,
在AppDelegate.cpp中的applicationDidFinishLaunching()函数中的代码全部注释,改成如下:
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
#else
glview = GLView::createWithRect("testLua", Rect(0,0,960,640));
director->setOpenGLView(glview);
#endif
}
auto engine = LuaEngine::getInstance();
ScriptEngineManager::getInstance()->setScriptEngine(engine);
engine->executeScriptFile("main.lua");
@8:上面完成后,把cpp-empty-testComponent项目设置为启动项目,运行,发现有问题:
Probelm1:error LNK2019: unresolved external symbol "public: void __cdecl cocos2d::Console::stop(void)" (?stop@Console@cocos2d@@QAAXXZ) 等类似的问题
解决办法:打开lua_cocos2dx_auto.cpp文件
把函数lua_cocos2dx_Console_stop(),lua_cocos2dx_Console_listenOnTCP(),
lua_cocos2dx_Console_listenOnFileDescriptor(),lua_cocos2dx_Console_log(),这四个函数注释掉,而且还有函数lua_register_cocos2dx_Console()中的 tolua_function(tolua_S,"stop",lua_cocos2dx_Console_stop);
tolua_function(tolua_S,"listenOnTCP",lua_cocos2dx_Console_listenOnTCP); tolua_function(tolua_S,"listenOnFileDescriptor",lua_cocos2dx_Console_listenOnFileDescriptor);
tolua_function(tolua_S,"log",lua_cocos2dx_Console_log);这四行注释掉;
Probelm2:liblua.lib(lua_cocos2dx_extension_auto.obj) : error LNK2019: unresolved external symbol "public: void __cdecl cocos2d::extension::AssetsManager::setStoragePath(char const *)
解决办法:这是因为在wp8库libExtensions下面的AssetsManager文件里夹里没有加入AssetsManager类,但是lua绑定的时候却又绑定了,所以加入进来就行了,那个类在cocos2d-x-3.0\extensions\assets-manager这个文件夹下:
但是这时要在AssetsManager.cpp中注释一些代码:
并且同样的要在liblua项目下的“配置属性”下的“c/c++”目录下的“常规”选项中的“附加包含目录”添加:
$(EngineRoot)extensions\assets-manager
Probelm3:iblua.lib(lua_cocos2dx_manual.obj) : error LNK2019: unresolved external symbol "public: void __cdecl cocos2d::Console::addCommand()
解决办法:在lua_cocos2dx_manual.cpp文件中把lua_cocos2dx_Console_addCommand()和 lua_cocos2dx_Console_send()这2个函数注释掉,而且在extendConsole()这个函数中把
tolua_function(tolua_S,"addCommand", lua_cocos2dx_Console_addCommand);
tolua_function(tolua_S,"send", lua_cocos2dx_Console_send);这两行代码注释掉;
如果pp-empty-testComponent项目运行没错,则成功;
@9:
由于当执行代码auto engine = LuaEngine::getInstance();时lua引擎自己会加载lua文件,所以把cocos2d-x-3.0\cocos\scripting\lua-bindings\script下的所有lua文件全部拷贝到
cocos2d-x-3.0\tests\cpp-empty-test\Resources下面即可;
在@7中的main.lua文件也是放到cocos2d-x-3.0\tests\cpp-empty-test\Resources下面的(包括你以后的lua代码和资源都放在这里的);
main.lua文件代码如下:
cc.Director:getInstance():setDisplayStats(true)
cc.Director:getInstance():setAnimationInterval(0.01)
这里我只要让手机屏幕的左下角显示出GL Verts:和GL calls就表示可以访问lua文件了,恭喜成功了。(当然你也可以加载图片来测试)
四:虽然打包完成,可以调用lua,但是在wp8平台运行的游戏可能还有许多问题,需要慢慢来改,如果遇到了而且解决了我也会随时更新的。