﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Expter笔记-随笔分类-Lua游戏脚本</title><link>http://www.cppblog.com/expter/category/9178.html</link><description>Knowledge is infinite！ Ace + ood ！Design patterns！</description><language>zh-cn</language><lastBuildDate>Sun, 18 Jan 2009 22:58:31 GMT</lastBuildDate><pubDate>Sun, 18 Jan 2009 22:58:31 GMT</pubDate><ttl>60</ttl><item><title>c++调用lua脚本1（平台windows）</title><link>http://www.cppblog.com/expter/archive/2009/01/18/72279.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Sun, 18 Jan 2009 14:04:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2009/01/18/72279.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/72279.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2009/01/18/72279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/72279.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/72279.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; &nbsp;通过c++调用lua 脚本，<br>&nbsp;&nbsp;&nbsp; 环境VC++6.0<br>&nbsp;&nbsp;&nbsp; lua&nbsp; sdk 5.1<br><br><br>&nbsp;&nbsp; 在调用前 先认识几个函数。<br>1． 调用lua_open()将创建一个指向Lua解释器的指针。 <br>2． luaL_openlibs()函数加载Lua库。 <br>3． 使用luaL_dofile()加载脚本并运行脚本。 <br>4． lua_close()来关闭Lua指向解释器的指针。<br>&nbsp;<br>5． 调用lua_getglobal()将add()函数压入栈顶，add()为lua函数。<br>6． 第一个参数x，通过调用lua_pushnumber()入栈。<br>7． 再次调用lua_pushnumber()将第二个参数入栈。<br>8． 使用lua_call()调用Lua函数。<br>9． 调用lua_tonumber()从栈顶取得函数的返回值。<br>10． lua_pop()移除栈顶的值。<br><br><br>代码<br>add.lua
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">function&nbsp;add&nbsp;(&nbsp;x,&nbsp;y&nbsp;)<br></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;y<br></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>end<br></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>main.cpp<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_31_91_Open_Image onclick="this.style.display='none'; Codehighlighter1_31_91_Open_Text.style.display='none'; Codehighlighter1_31_91_Closed_Image.style.display='inline'; Codehighlighter1_31_91_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_31_91_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_91_Closed_Text.style.display='none'; Codehighlighter1_31_91_Open_Image.style.display='inline'; Codehighlighter1_31_91_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_31_91_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_31_91_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lua.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lualib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lauxlib.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_94_118_Open_Image onclick="this.style.display='none'; Codehighlighter1_94_118_Open_Text.style.display='none'; Codehighlighter1_94_118_Closed_Image.style.display='inline'; Codehighlighter1_94_118_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_94_118_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_94_118_Closed_Text.style.display='none'; Codehighlighter1_94_118_Open_Image.style.display='inline'; Codehighlighter1_94_118_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_94_118_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_94_118_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;the&nbsp;Lua&nbsp;interpreter&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>lua_State&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;L;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;luaadd&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;y&nbsp;)<br><img id=Codehighlighter1_165_388_Open_Image onclick="this.style.display='none'; Codehighlighter1_165_388_Open_Text.style.display='none'; Codehighlighter1_165_388_Closed_Image.style.display='inline'; Codehighlighter1_165_388_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_165_388_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_165_388_Closed_Text.style.display='none'; Codehighlighter1_165_388_Open_Image.style.display='inline'; Codehighlighter1_165_388_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_165_388_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_165_388_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sum;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">函数名</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;lua_getglobal(L,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">add</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">第一个参数压栈</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;lua_pushnumber(L,&nbsp;x);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">第二个参数压栈</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;lua_pushnumber(L,&nbsp;y);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">调用函数</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;lua_call(L,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">得到返回值</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)lua_tonumber(L,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;lua_pop(L,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;sum;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">argv[]&nbsp;)<br><img id=Codehighlighter1_427_684_Open_Image onclick="this.style.display='none'; Codehighlighter1_427_684_Open_Text.style.display='none'; Codehighlighter1_427_684_Closed_Image.style.display='inline'; Codehighlighter1_427_684_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_427_684_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_427_684_Closed_Text.style.display='none'; Codehighlighter1_427_684_Open_Image.style.display='inline'; Codehighlighter1_427_684_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_427_684_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_427_684_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sum;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">创建一个指向Lua解释器的指针。</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;L&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;lua_open();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">函数加载Lua库</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;luaL_openlibs(L);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">加载脚本</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;luaL_dofile(L,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">add.lua</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">调用函数</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;luaadd(&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;print&nbsp;the&nbsp;result&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">The&nbsp;sum&nbsp;is&nbsp;%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;sum&nbsp;);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">关闭&nbsp;释放资源&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;lua_close(L);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br><br>注意问题：<br>1.工程头文件lua.h等，编译器能找到，可以通过工具来设置头文件路径。<br>2. 添加lua5.1.lib到Object/library modules列表中。 <br><br>测试结果<br>The sum is 21<br><br>关于lua的认识<br><a href="http://www.cppblog.com/expter/archive/2008/12/24/70224.html">http://www.cppblog.com/expter/archive/2008/12/24/70224.html</a>
<img src ="http://www.cppblog.com/expter/aggbug/72279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2009-01-18 22:04 <a href="http://www.cppblog.com/expter/archive/2009/01/18/72279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lua学习笔记一</title><link>http://www.cppblog.com/expter/archive/2008/12/24/70224.html</link><dc:creator>expter</dc:creator><author>expter</author><pubDate>Wed, 24 Dec 2008 03:07:00 GMT</pubDate><guid>http://www.cppblog.com/expter/archive/2008/12/24/70224.html</guid><wfw:comment>http://www.cppblog.com/expter/comments/70224.html</wfw:comment><comments>http://www.cppblog.com/expter/archive/2008/12/24/70224.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/expter/comments/commentRss/70224.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/expter/services/trackbacks/70224.html</trackback:ping><description><![CDATA[<p><br><br>//声明一个函数<br>function pythagorean(a, b)<br>&nbsp;&nbsp;&nbsp; local c2 = a^2 + b^2<br>&nbsp;&nbsp; return math.sqrt(c2)<br>end</p>
<p>//打印结果<br>int(pythagorean(3,4))</p>
<p><br>//直接输出</p>
<p>-- Hello World in Lua<br>print("Hello World.")</p>
<p>//循环输出<br>for i=1,5 do<br>&nbsp; print("i is now " .. i)<br>end<br><br><br>//定一个变量</p>
<p>b = 10</p>
<p>print(b)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt; 10</p>
<p>b = nil&nbsp;&nbsp; //删除一个变量</p>
<p>print(b)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt; nil<br></p>
<p><br>总的来说 lua有以下几点：<br></p>
<p class=AltP style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体">①</span> <strong><span style="FONT-FAMILY: 宋体">可扩展性</span></strong><span style="FONT-FAMILY: 宋体">。</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">的扩展性非常卓越，以至于很多人把</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">用作搭建领域语言的工具（注：比如游戏脚本）。</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">被设计为易于扩展的，可以通过</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">代码或者</span><span lang=EN-US>C</span><span style="FONT-FAMILY: 宋体">代码扩展，</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">的很多功能都是通过外部库来扩展的。</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">很容易与</span><span lang=EN-US>C/C++</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>java</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>fortran</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>Smalltalk</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>Ada</span><span style="FONT-FAMILY: 宋体">，以及其他语言接口。</span></p>
<p class=AltP style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体">②</span> <strong><span style="FONT-FAMILY: 宋体">简单</span></strong><span style="FONT-FAMILY: 宋体">。</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">本身简单，小巧；内容少但功能强大，这使得</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">易于学习，很容易实现一些小的应用。他的完全发布版（代码、手册以及某些平台的二进制文件）仅用一张软盘就可以装得下。</span></p>
<p class=AltP style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体">③</span> <strong><span style="FONT-FAMILY: 宋体">高效率</span></strong><span style="FONT-FAMILY: 宋体">。</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">有很高的执行效率，统计表明</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">是目前平均效率最高的脚本语言。</span></p>
<p class=AltP style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体">④</span> <strong><span style="FONT-FAMILY: 宋体">与平台无关</span></strong><span style="FONT-FAMILY: 宋体">。</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">几乎可以运行在所有我们听说过的系统上，如</span><span lang=EN-US>NextStep</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>OS/2</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>PlayStation II (Sony)</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>Mac OS-9</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>OS X</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>BeOS</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>MS-DOS</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>IBM mainframes</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>EPOC</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>PalmOS</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>MCF5206eLITE Evaluation Board</span><span style="FONT-FAMILY: 宋体">、</span><span lang=EN-US>RISC OS</span><span style="FONT-FAMILY: 宋体">，及所有的</span><span lang=EN-US>Windows</span><span style="FONT-FAMILY: 宋体">和</span><span lang=EN-US>Unix</span><span style="FONT-FAMILY: 宋体">。</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">不是通过使用条件编译实现平台无关，而是完全使用</span><span lang=EN-US>ANSI (ISO) C</span><span style="FONT-FAMILY: 宋体">，这意味着只要你有</span><span lang=EN-US>ANSI C</span><span style="FONT-FAMILY: 宋体">编译器你就可以编译并使用</span><span lang=EN-US>Lua</span><span style="FONT-FAMILY: 宋体">。</span></p>
<br>如果有兴趣一起来学习lua 把
<img src ="http://www.cppblog.com/expter/aggbug/70224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/expter/" target="_blank">expter</a> 2008-12-24 11:07 <a href="http://www.cppblog.com/expter/archive/2008/12/24/70224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>