<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Взаимодействие с LUA из внешнего ПО.]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=38&amp;type=atom" />
	<updated>2017-02-16T17:23:49Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=38</id>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2091#p2091" />
			<content type="html"><![CDATA[<p>ubase, удалось ли Вам продвинуться в передаче данных из QLua в свою программу и если да, то как?</p>]]></content>
			<author>
				<name><![CDATA[Balug]]></name>
				<uri>https://quik2dde.ru/profile.php?id=159</uri>
			</author>
			<updated>2017-02-16T17:23:49Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2091#p2091</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=262#p262" />
			<content type="html"><![CDATA[<p>Есть парочка идей простых по организации межпроцессного взаимодействия. Писал скрипт lua, использующий сокеты (библиотека ZeroMQ). Но, к сожалению, не работает в многопоточном режиме из коллбэков. <br />Второй вариант - разделяемая память на Qt. Но не могу собрать обвязку на Qt. Пробовал кто-нибудь собиравть Qt bindings для lua?<br />Edited: скомпилировал qt bindings. Буду пробовать делать с использованием shared memory</p>]]></content>
			<author>
				<name><![CDATA[mikhailkis]]></name>
				<uri>https://quik2dde.ru/profile.php?id=121</uri>
			</author>
			<updated>2013-04-03T19:47:45Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=262#p262</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=230#p230" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>admin пишет:</cite><blockquote><p>Зачем же вы все так сложно делаете-то? <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p></blockquote></div><p>Да вроде нет ничего проще консольных приложений.&nbsp; А с библиотеками, с ними еще разбираться надо.... целый процесс. <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> Это на потом, если понадобится.<br />Да уже сделал. Луа из скрипта вызывает консоль. Дальше этого пока не пошел.</p>]]></content>
			<author>
				<name><![CDATA[ubase]]></name>
				<uri>https://quik2dde.ru/profile.php?id=98</uri>
			</author>
			<updated>2013-02-16T17:30:27Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=230#p230</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=229#p229" />
			<content type="html"><![CDATA[<p>Зачем же вы все так сложно делаете-то? <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>Нужен интверактив - возьмите любой гвотоый изуальный интерфейс, [url=https://quik2dde.ru/viewtopic.php?id=26]например VCLua[/url], или любой другой. И пользуйтесь им! что-то просто записать - лог-файл, евго сегда можно смотреть.</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://quik2dde.ru/profile.php?id=2</uri>
			</author>
			<updated>2013-02-16T07:33:43Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=229#p229</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=228#p228" />
			<content type="html"><![CDATA[<p>admin, я хотел к экзэшнику Луа прицепить как к ДЛЛ - не получилось.<br />Сейчас ДЛЛ пишу, но новая проблема. В ДЛЛ не хочет открываться консоль (из экспорт-функции, естественно) -&nbsp; AllocConsole(). Уже при компиляции ошибки. В ЕХЕ все тоже самое работает без проблем. Хочется пообщаться с машинкой в диалоге. <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /><br />Процесс создаст внутри Квик машины. Я хочу с нее дескриптор получить, и в него уже пихать свои функции.<br />На всяк случай. исходник [url=http://files.mail.ru/A347F8994FB24E4680E85578A0CA5F21]открытие консоли ЕХЕ[/url]. Может слегка не работать, т.к. последний вариант я сильно сломал, и бросил за ненадобностью. <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></content>
			<author>
				<name><![CDATA[ubase]]></name>
				<uri>https://quik2dde.ru/profile.php?id=98</uri>
			</author>
			<updated>2013-02-15T19:33:12Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=228#p228</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=227#p227" />
			<content type="html"><![CDATA[<p>Я позже постараюсь накидать примерчик, проверить. Почему-то думаю, что вы ошибаетесь или как-то не совсем правильно ставите эксперимент, хотя, конечно, могут быть нюансы.</p><p>Вот только беда в том, что даже если это заработает - это не поможет вам сделать желаемое: exe в этом случае по сути будет все равно dll-кой внутри процесса квика, только название файла другое, а так - по суи та же dll. Т.е. запустив этот exe самостоятельно вы вовсе не окажетесь &quot;внутри QUIK&quot;, ведь под запущенный exe Windows создаст (обязательно создаст, поверьте!) отдельный никак не связанный с квиком процесс.</p><p>Я правильно понимаю, что приложение, которое вы хотите запустить, есть у вас в виде исходного кода?<br />Если это так - чем вас не устраивает вариант просто буквально этот же текст перекомпилировать в виде dll, загрузить как доп. модуль Lua и радоваться?</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://quik2dde.ru/profile.php?id=2</uri>
			</author>
			<updated>2013-02-15T17:31:37Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=227#p227</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=226#p226" />
			<content type="html"><![CDATA[<p>Дополнительно выяснилось следующее.<br />Луа (не Клуа), в отличии от Win-приложений, не умеет работать с Export-функциями (__declspec( dllexport ) declarator) exe-файлов. Только DLL. ЕХЕ-файлов она (Луа) просто, как таковых, не видит.</p>]]></content>
			<author>
				<name><![CDATA[ubase]]></name>
				<uri>https://quik2dde.ru/profile.php?id=98</uri>
			</author>
			<updated>2013-02-15T17:08:59Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=226#p226</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=225#p225" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ubase пишет:</cite><blockquote><p>mbul, вы меня задолбали моей квалификацией. Если по делу вам сказать нечего - не пишите в тему, плиз. А еще лучше удалите свои сообщения как флуд.</p></blockquote></div><p>Вам уже несколько раз ответили - сделать то что Вы хотите очень сложно. Причем сложно не потому что это QUIK и недоделанное уе... &quot;клуа&quot;, а просто потому что сложно. И еще будет работать медленно и ненадежно.</p>]]></content>
			<author>
				<name><![CDATA[mbul]]></name>
				<uri>https://quik2dde.ru/profile.php?id=89</uri>
			</author>
			<updated>2013-02-15T15:02:46Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=225#p225</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=224#p224" />
			<content type="html"><![CDATA[<p>swerg, ну все уже расписано в самом начале темы. Читайте собщения мои и admin.</p>]]></content>
			<author>
				<name><![CDATA[ubase]]></name>
				<uri>https://quik2dde.ru/profile.php?id=98</uri>
			</author>
			<updated>2013-02-15T13:44:55Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=224#p224</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=222#p222" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ubase пишет:</cite><blockquote><p>mbul, Можно я все-таки буду называть это уе...&nbsp; Т.е. это не Луа, а нечто Луа-образное.<br />Луа - по определению, язык включений (см мануал [url=http://www.lua.ru/doc/6.html]Несмотря на то, что язык Lua был has разработан в качестве языка-расширения, для включения в программы-хозяева , написанные на C, он также зачастую используется как автономный язык[/url]). Клуа - чисто автономный. Использование синтаксиса Луа язык не определяет.<br />Синтаксис у С++ и С# или VB и VB.NET тоже, по большому счету, одинаковы.</p></blockquote></div><p>Можете называть как угодно, это просто обозначает Ваш уровень квалификации и понимания вопроса <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> Если честно, то я не знаю как должен называться язык, который получается из исходников Lua вкомпилированных в проект.<br />Ну а если не отвлекаться на название, то вашу задачу разумными средствами не решить. И связано это не с конкретной реализацией Lua, а с самой постановкой задачи.</p>]]></content>
			<author>
				<name><![CDATA[mbul]]></name>
				<uri>https://quik2dde.ru/profile.php?id=89</uri>
			</author>
			<updated>2013-02-15T12:37:21Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=222#p222</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=220#p220" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ubase пишет:</cite><blockquote><p>swerg, иначе можно было сделать прикомпилировав библиотеки Клуа к qlua.dll или дать нам эти библиотеки из Квик. Правда тогда и Луа не нужна.</p></blockquote></div><p>&quot;Дать нам&quot; - в каком смысле? сделать доступными из скриптов LUA экспортированные из библиотек функции? или дать некую библиотеку dll, которую можно было бы подключить к своему приложению и таким образом управлять QUIK? ну так такая библиотека же уже есть, trans2quik.dll называется. Но с такими библиотеками никак не вяжутся ваши слова &quot;прикомпилировав библиотеки Клуа к qlua.dll&quot;.<br />Никак не могу вас понять.</p><p>Меня что удивляет: почему вы сами не желаете расписать подробнее ваше видение, чтобы не приходилось переспрашивать/уточнять?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2013-02-15T09:54:22Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=220#p220</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=219#p219" />
			<content type="html"><![CDATA[<p>swerg, иначе можно было сделать прикомпилировав библиотеки Клуа к qlua.dll или дать нам эти библиотеки из Квик. Правда тогда и Луа не нужна. <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /><br />зы Откройте, кстати, info.exe в dumpbin. Много интересного увидите.</p>]]></content>
			<author>
				<name><![CDATA[ubase]]></name>
				<uri>https://quik2dde.ru/profile.php?id=98</uri>
			</author>
			<updated>2013-02-15T09:48:35Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=219#p219</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=218#p218" />
			<content type="html"><![CDATA[<p>Ну да, потому что в qlua.dll после вызова lua_open() и загрузки стандартных библиотек через вызов luaL_openlibs(L) происходит регистрация &quot;IsConnected&quot; и прочих поддерживаемых функций.</p><p>Но это ж стандартно так устроено подключение Lua, в любой программе. Как иначе-то можно сделать?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2013-02-15T09:21:52Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=218#p218</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=217#p217" />
			<content type="html"><![CDATA[<p>swerg, Вы просто запустили Луа, а не Клуа. Поэтому все получилось. У вас сейчас работает Луа-машина, а не Клуа машина. Клуа машина работает в потоке Квик.<br />Чтобы убедиться, запустите Квик и вызовите из внешней программы через Клуа любую функцию Клуа, IsConnected() (так кажется она пишется) например. Собственно, для этого весь сыр-бор и с файлом qlua.lib задуман. Клуа-машина наружу не работает.<br />Я это все уже прошел, полагая, что функционал Луа дополнен функциями мануала Квик. Это, к сожалению. не так.</p>]]></content>
			<author>
				<name><![CDATA[ubase]]></name>
				<uri>https://quik2dde.ru/profile.php?id=98</uri>
			</author>
			<updated>2013-02-15T09:04:11Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=217#p217</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Взаимодействие с LUA из внешнего ПО.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=216#p216" />
			<content type="html"><![CDATA[<p>Чтобы было проще понять о чем вы - накидал стандартный простейший примерчик использования Lua, приведенный здесь: [url]http://www.lua.org/pil/24.1.html[/url]<br />Только в свойствах проекта указал линковку не с lua5.1.dll (т.е. подключил не lua5.1.lib), а подключил выложенный вами файл qlua.lib.</p><p>[url=http://files.mail.ru/9E6AA944A9734BE49B029C3D785562CF]архив с проектом и собранным exe[/url]</p><p>Пример я даже немного упростил, вбив непосредственно в&nbsp; него исполняемый текст на Lua:</p><div class="codebox"><pre><code>#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &quot;lua.hpp&quot;

const char* LUA_SCRIPT = &quot;print (&#039;5*5=&#039; .. tostring(5*5))&quot;;

int main (void) {
      int error;
      lua_State *L = lua_open();   /* opens Lua */
      luaL_openlibs(L);

      error = luaL_loadbuffer(L, LUA_SCRIPT, strlen(LUA_SCRIPT), &quot;line&quot;)
              || lua_pcall(L, 0, 0, 0);
      if (error) {
          fprintf(stderr, &quot;%s&quot;, lua_tostring(L, -1));
          lua_pop(L, 1);  /* pop error message from the stack */
      }
    
      lua_close(L);
      return 0;
}</code></pre></div><p>Рядом со скомпилированным exe нужно положить qlua.dll из квика.<br />Запускаем - получаем вывод в консоль:</p><div class="codebox"><pre><code>5*5=25</code></pre></div><p>т.е. выполняется наш скрипт на Lua. Заметьте, при этом используется именно и исключительно qlua.dll.<br />Если в свойствах проекта для линковки вместо qlua.lib указать lua5.1.lib&nbsp; и просто перекомпилировать тот же исходный кол - тогда для запуска программа будет требовать уже lua5.1.dll вместо qlua.dll, но также успешно выполнять тот же самый скрипт на Lua.</p><p>К чему я это все: на основании вышенаписанного хотелось бы понять что вы подразумевали под фразой:</p><div class="quotebox"><blockquote><p>Вызов функций Клуа из внешней программы.<br />В Луа это без проблем. В Клуа это без танцев с бубном невозможно.</p></blockquote></div><p>И вот под этой:</p><div class="quotebox"><blockquote><p>то, что в Луа делается без вопросов в Клуа невозможно.</p></blockquote></div><p>Не ради спора, поверьте. Я просто хочу вас понять.<br />Как видим - вызов внешних функций происходит без проблем, без вопросов и без танцев с бубнами как с использованием Lua, так и с использованием qlua.<br />Вы об этом говорили? или я вас не понял, и вы говорили о чем-то другом?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2013-02-15T08:28:55Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=216#p216</id>
		</entry>
</feed>
