<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=How_to_connect_Lua_and_C%2B%2B</id>
	<title>How to connect Lua and C++ - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/index.php?action=history&amp;feed=atom&amp;title=How_to_connect_Lua_and_C%2B%2B"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=How_to_connect_Lua_and_C%2B%2B&amp;action=history"/>
	<updated>2026-05-20T19:30:11Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=How_to_connect_Lua_and_C%2B%2B&amp;diff=10285&amp;oldid=prev</id>
		<title>Patarakin: Новая страница: «{{Scripting Tutorials |Description=C++ может вызывать функции Lua, а Lua может вызывать функции C++. Это позволяет вынести часть кода в скрипты и писать собственные функции, расширяющие функциональность программы. |Field_of_knowledge=Информатика |Возрастная категория=14 |Clarifying_video=https...»</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=How_to_connect_Lua_and_C%2B%2B&amp;diff=10285&amp;oldid=prev"/>
		<updated>2023-06-01T08:37:19Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{Scripting Tutorials |Description=C++ может вызывать функции Lua, а Lua может вызывать функции C++. Это позволяет вынести часть кода в скрипты и писать собственные функции, расширяющие функциональность программы. |Field_of_knowledge=Информатика |Возрастная категория=14 |Clarifying_video=https...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=C++ может вызывать функции Lua, а Lua может вызывать функции C++. Это позволяет вынести часть кода в скрипты и писать собственные функции, расширяющие функциональность программы.&lt;br /&gt;
|Field_of_knowledge=Информатика&lt;br /&gt;
|Возрастная категория=14&lt;br /&gt;
|Clarifying_video=https://www.youtube.com/watch?v=kDHGfHxwymI&lt;br /&gt;
|Environment=Lua, C++&lt;br /&gt;
}}&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;lua.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    lua_State* L = luaL_newstate();&lt;br /&gt;
    luaL_openlibs(L);&lt;br /&gt;
    luaL_dofile(L, &amp;quot;script.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    lua_getglobal(L, &amp;quot;myFunction&amp;quot;);&lt;br /&gt;
    lua_pushnumber(L, 10);&lt;br /&gt;
    lua_pushnumber(L, 20);&lt;br /&gt;
    lua_call(L, 2, 1);&lt;br /&gt;
&lt;br /&gt;
    int result = lua_tonumber(L, -1);&lt;br /&gt;
    lua_pop(L, 1);&lt;br /&gt;
&lt;br /&gt;
    lua_close(L);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;lua.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class MyClass {&lt;br /&gt;
public:&lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    lua_State* L = luaL_newstate();&lt;br /&gt;
    luaL_openlibs(L);&lt;br /&gt;
&lt;br /&gt;
    MyClass* obj = new MyClass();&lt;br /&gt;
    obj-&amp;gt;x = 10;&lt;br /&gt;
    obj-&amp;gt;y = 20;&lt;br /&gt;
&lt;br /&gt;
    lua_pushlightuserdata(L, obj);&lt;br /&gt;
    lua_setglobal(L, &amp;quot;myObject&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    luaL_dofile(L, &amp;quot;script.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    lua_close(L);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 3 Registering C++ functions for Lua code to cal ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;lua.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int myFunction(lua_State* L) {&lt;br /&gt;
    int x = lua_tonumber(L, 1);&lt;br /&gt;
    int y = lua_tonumber(L, 2);&lt;br /&gt;
    int result = x + y;&lt;br /&gt;
    lua_pushnumber(L, result);&lt;br /&gt;
    return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    lua_State* L = luaL_newstate();&lt;br /&gt;
    luaL_openlibs(L);&lt;br /&gt;
&lt;br /&gt;
    lua_pushcfunction(L, myFunction);&lt;br /&gt;
    lua_setglobal(L, &amp;quot;myFunction&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    luaL_dofile(L, &amp;quot;script.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    lua_close(L);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 4 Using Lua to configure C++ objects: ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;lua.hpp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class MyClass {&lt;br /&gt;
public:&lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    lua_State* L = luaL_newstate();&lt;br /&gt;
    luaL_openlibs(L);&lt;br /&gt;
&lt;br /&gt;
    MyClass* obj = new MyClass();&lt;br /&gt;
    obj-&amp;gt;x = 10;&lt;br /&gt;
    obj-&amp;gt;y = 20;&lt;br /&gt;
&lt;br /&gt;
    lua_newtable(L);&lt;br /&gt;
    lua_pushnumber(L, obj-&amp;gt;x);&lt;br /&gt;
    lua_setfield(L, -2, &amp;quot;x&amp;quot;);&lt;br /&gt;
    lua_pushnumber(L, obj-&amp;gt;y);&lt;br /&gt;
    lua_setfield(L, -2, &amp;quot;y&amp;quot;);&lt;br /&gt;
    lua_setglobal(L, &amp;quot;myObject&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    luaL_dofile(L, &amp;quot;script.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    obj-&amp;gt;x = lua_tonumber(L, -2);&lt;br /&gt;
    obj-&amp;gt;y = lua_tonumber(L, -1);&lt;br /&gt;
&lt;br /&gt;
    lua_close(L);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Patarakin</name></author>
	</entry>
</feed>