luacom鏄竴涓潪甯稿己澶х殑妯″潡錛屽畠浣挎垜浠彲浠ュ簲鐢ㄥ悇縐峜om緇勪歡錛屾瘮濡俉ord錛屼絾鏄紝鏈変竴涓棶棰橈紝涓枃鏂囦歡鍚嶅畠涓嶈瘑鍒備負(fù)浠涔堝憿錛熷洜涓篶om鍐呴儴鏄?unicode鐨勶紝浜庢槸luacom瑕佹眰鎵鏈夎緭鍏ラ兘鏄痷tf-8鐨勶紝鑰屼笖luacom鐨勮緭鍑轟篃鏄痷tf-8鐨勩傝繖鍙偪涔堝姙鍟婏紵
GNU鏈変釜libiconv搴擄紝瑕佹槸鏈夎繖涓垜浠氨涓嶆曚簡(jiǎn)錛?luaforge涓婃悳绱笅錛屾灉鐒舵湁lua-iconv錛屽畨瑁咃紒
luarocks install lua-iconv 涓嶅ソ鎰忔濓紝鍑洪敊鍟︼紒鍑洪敊鐨勫師鍥犳湁涓や釜錛?/p>
浠ヤ笂嫻嬭瘯浠g爜錛岀涓嬈¤繍琛屾椂浼?xì)鍒涘?C:\浣犲ソword.docx 鏂囦歡錛屼互鍚庡啀榪愯鏃朵細(xì)鎵撳紑榪欎釜鏂囦歡錛屾瘡嬈¤繍琛岄兘浼?xì)杈撳?“浣犲ソword” 鏂囧瓧銆傚鏋滀綘鏄疻ord 2003錛岄偅涔堬紝璇峰皢docx鏀逛負(fù)doc鍗沖彲銆?/p>
http://hi.baidu.com/nivrrex/blog/item/17c231adad9e8a0f4b36d6ca.html
榪欎綅澶у摜鑷繁鐢╒C鐨勫嚱鏁板啓浜?jiǎn)铦{鎹㈠嚱鏁幫紝涓嶈繃娌℃湁灝佽鎴愬簱錛岃屼笖鎴戣寰楀啓寰椾笉澶熺畝媧侊紝鐢╥conv搴撴瘮杈冨ソ錛岃繕涓嶅鏄撳嚭閿?/p>
http://www.cppblog.com/darkdestiny/archive/2009/04/25/81055.html
libiconv鐨勮鏄?/div>榪欎綅澶у摜錛岃嚜宸辯敤iconv瀹炵幇浜?jiǎn)铦{鎹紝涔熸病鏈夊皝瑁呮垚搴撱傛垜鐨?#8220;L”鍑芥暟涔熸槸浠庝粬榪欏熸潵鐨勶紝闈炲父鎰熻阿錛佷笉榪囷紝鎴戣涓哄畠榪欎釜鐩告瘮鎴戣繖涓湁涓や釜寮辯偣錛?/p>
1銆佹瘡嬈¤皟鐢↙鍑芥暟錛岄兘瑕佺粡榪?iconv 鎵撳紑銆佽漿鎹€佸叧闂殑榪囩▼錛岃屾垜瀵逛竴縐嶅艦寮忕殑杞崲鍙渶瑕佹墦寮涓嬈★紙lua-iconv瀹炵幇鐨刕_^錛?/p>
2銆佸鏋滆瀹炵幇鍙嶅悜杞崲錛屽嵆utf-8鍒癵bk錛岄偅涔堣繕寰椾慨鏀規(guī)ā鍧楋紝鑰屾垜榪欓噷灝變笉鐢ㄤ簡(jiǎn)錛堝綋鐒朵篃鏄痩ua-iconv瀹炵幇鐨刕_^錛?br />
Cocos2d-x 宸茬粡鎻愪緵浜?jiǎn)瀵?Lua 鐨勫熀鏈敮鎸侊紝浣嗛櫎浜?Lua 鐨勫熀鏈簱澶栵紝騫舵病鏈夋崋緇戜竴浜涘父鐢ㄥ簱錛屼緥濡?LuaSocket銆?/p>
緇忚繃涓鐣皾璇曪紝緇堜簬鎼炲畾浜?jiǎn)姝ら棶棰?:)
鑾峰緱 LuaSocket 婧愪唬鐮佸悗錛屽湪 cocos2d-x 欏圭洰鐨?libs/lua 鐩綍涓緩绔嬪瓙鐩綍 exts/luasocket錛屽茍灝? luasocket-2.0.2/src 鐩綍涓墍鏈夌殑 *.c/*.h 鏂囦歡鎷瘋礉鍒?libs/lua/exts/luasocket 鐩綍涓?/p>
鍦?libs/lua/exts 鐩綍涓緩绔嬫枃浠訛細(xì)
lualoadexts.h
#ifndef __LUALOADEXTS_H_ #define __LUALOADEXTS_H_ #include "lauxlib.h" void luax_initpreload(lua_State *L); #endif // __LUALOADEXTS_H_
lualoadexts.c
#include "lualoadexts.h" // luasocket #include "luasocket.h" #include "mime.h" static luaL_Reg luax_preload_list[] = { {"socket.core", luaopen_socket_core}, {"mime.core", luaopen_mime_core}, {NULL, NULL} }; void luax_initpreload(lua_State *L) { luaL_Reg* lib = luax_preload_list; luaL_findtable(L, LUA_GLOBALSINDEX, "package.preload", sizeof(luax_preload_list)/sizeof(luax_preload_list[0])-1); for (; lib->func; lib++) { lua_pushstring(L, lib->name); lua_pushcfunction(L, lib->func); lua_rawset(L, -3); } lua_pop(L, 1); }
鏈鍚庯紝鎵撳紑 libs/lua/cocos2dx_support/LuaEngineImpl.cpp 鏂囦歡錛屽湪 CCLuaScriptModule::CCLuaScriptModule() 鏋勯犲嚱鏁版渶鍚庤澆鍏?Lua 鏍囧噯搴撳拰鎵╁睍搴撶殑浠g爜錛?/p>
CCLuaScriptModule::CCLuaScriptModule() { d_ownsState = true; d_state = lua_open(); luaL_openlibs(d_state); int nOpen = tolua_Cocos2d_open(d_state); CC_UNUSED_PARAM(nOpen); nOpen = tolua_SimpleAudioEngine_open(d_state); CC_UNUSED_PARAM(nOpen); // init standard libraries luaL_openlibs(d_state); // init more libraries luax_initpreload(d_state); }
LuaScoket 闄や簡(jiǎn) C 浠g爜錛岃繕鏈変竴閮ㄥ垎鏄?Lua 浠g爜錛屾墍浠ラ渶瑕?strong>灝?luasocket-2.0.2/src/*.lua 澶嶅埗鍒伴」鐩腑錛岀劧鍚庣敤涓嬪垪 Lua 浠g爜榪涜嫻嬭瘯錛?/p>
local socket = require("socket") print("socket module:", socket) print("socket.connect function:", socket.connect) print("socket.bind function:", socket.bind) print("\n") print("io module:", io)
灝?Lua 婧愪唬鐮佺洿鎺ユ斁鍏ユ渶緇堜駭鍝侊紝鏄劇劧涓嶆槸涓悊鎯抽夋嫨銆傚埄鐢?LOOP 鎻愪緵鐨?Precompiler 宸ュ叿錛屽彲浠ュ皢 Lua 妯″潡緙栬瘧涓?C 浠g爜銆?/p>
LOOP 鏄竴涓?Lua 鐨?OOP 妗嗘灦錛孭recompiler 鍒欐槸 LOOP 涓寘鍚殑涓涓伐鍏楓傝瀹夎 LOOP錛屽緱鍏堝畨瑁?LuaRocks銆?/p>
$ wget http://luarocks.org/releases/luarocks-2.0.5.tar.gz $ tar zxf luarocks-2.0.5.tar.gz $ cd luarocks-2.0.5 $ ./configure $ make $ sudo make install
鐒跺悗瀹夎 LOOP:
$ sudo luarocks install loop
OK錛岀幇鍦ㄥ噯澶囧伐浣滃畬鎴愪簡(jiǎn)錛屾帴涓嬫潵灝辨槸緙栬瘧 Lua 妯″潡涓?C 浠g爜銆?/p>
鎴戜滑鐨勬鏋朵腑鏈変竴涓?display.lua 妯″潡錛屼笅闈㈢殑浠g爜鍙互灝嗚繖涓ā鍧楃紪璇戝嚭鏉ワ細(xì)
$ precompiler.lua -o luaqeeplayscripts -l "?.lua" -b -p qeeplay qeeplay/display.lua
鏈鍚庝細(xì)寰楀埌 luaqeeplayscripts.c/.h 鏂囦歡銆傚叾涓畾涔変簡(jiǎn)鍑芥暟錛?/p>
qeeplay int luaopen_qeeplay_display(lua_State *L);
鍦ㄤ笂榪板懡浠よ涓紝鍚勪釜鍙傛暟鐨勬剰涔夊涓嬶細(xì)
-o: 鎸囧畾杈撳嚭鏂囦歡鍚嶏紝渚嬪 -o luaqeeplayscripts 浼?xì)杈撳?luaqeeplayscripts.c/.h -l: 鎸囧畾鎺ㄦ柇 lua 妯″潡鍚嶇殑妯″紡錛岃瀹氫負(fù) -l "?.lua" 灝變細(xì)浠?lua 婧愭枃浠跺悕縐頒綔涓烘ā鍧楀悕銆? 渚嬪 display.lua 灝辨槸 display 妯″潡銆傚鏋?display.lua 鏂囦歡鍦?qeeplay 瀛愮洰褰曚腑錛? 閭d箞 qeeplay/display.lua 鐨勬ā鍧楀悕灝辨槸 qeeplay.display銆? -b: 緙栬瘧涓哄瓧鑺傜爜 -p: 鍑芥暟瀹氫箟鐨勫墠緙錛屼竴鑸寚瀹氫竴涓彲浠ユ柟渚夸互鍚庡鐢熸垚鐨?.c/.h 鏂囦歡榪涜鍐嶅鐞?
濡傛灉瑕佸皢澶氫釜 lua 鏂囦歡緙栬瘧涓轟竴涓?C 浠g爜錛屽彲浠ユ坊鍔犳洿澶氱殑鏂囦歡鍚嶅埌鍛戒護(hù)琛屼腑錛屼緥濡傦細(xì)
$ precompiler.lua -o luasocketscripts -l "?.lua" -b -p socket \ socket.lua \ socket/url.lua \ socket/tp.lua \ socket/smtp.lua \ socket/mime.lua \ socket/ltn12.lua \ socket/http.lua \ socket/ftp.lua
浼?xì)鍒涘?luasocketscripts.c/.h 鏂囦歡錛屽叾涓畾涔変笅鍒楀嚱鏁幫細(xì)
socket int luaopen_socket(lua_State *L); socket int luaopen_socket_url(lua_State *L); socket int luaopen_socket_tp(lua_State *L); socket int luaopen_socket_smtp(lua_State *L); socket int luaopen_socket_mime(lua_State *L); socket int luaopen_socket_ltn12(lua_State *L); socket int luaopen_socket_http(lua_State *L); socket int luaopen_socket_ftp(lua_State *L);
鍒╃敤鍓嶄竴綃囨枃绔犱腑鐨?lualoadexts.c/lualoadexts.h錛屽仛涓浜涗慨鏀瑰嵆鍙細(xì)
luaqeeplayscripts.c
#include "lualoadexts.h" // qeeplay #include "luaqeeplayscripts.h" static luaL_Reg luax_preload_list[] = { {"qeeplay.display", luaopen_qeeplay_display}, {NULL, NULL} }; void luax_initpreload(lua_State *L) { .... }
濡傛灉鏈夋洿澶氭ā鍧楅渶瑕佽澆鍏ワ紝鍙渶瑕?include 鐩稿簲鐨勫ご鏂囦歡錛屽茍淇敼 luax_preload_list 瀹氫箟鍗沖彲銆?/p>