<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; Можно ли вывести в консоль из C++ библиотеки?]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=384</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=384&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Можно ли вывести в консоль из C++ библиотеки?».]]></description>
		<lastBuildDate>Tue, 04 Oct 2022 17:02:52 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3735#p3735</link>
			<description><![CDATA[<p>Вот так:<br /></p><div class="codebox"><pre><code>#include &lt;Windows.h&gt;


    //----------------------------------------------
    AllocConsole();
    freopen(&quot;CONOUT$&quot;, &quot;w&quot;, stdout);
    //----------------------------------------------

    std::cout &lt;&lt; &quot;CHECK&quot; &lt;&lt; std::endl;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Tue, 04 Oct 2022 17:02:52 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3735#p3735</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3721#p3721</link>
			<description><![CDATA[<p><strong>Serg_</strong>, я ведь правильно понимаю (по другим темам), что вам удалось отобразить консоль из dll?<br />Поделитесь кодом, необходимым для этого.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Tue, 04 Oct 2022 08:40:30 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3721#p3721</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3614#p3614</link>
			<description><![CDATA[<p>Понял, спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Wed, 21 Sep 2022 18:22:04 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3614#p3614</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3613#p3613</link>
			<description><![CDATA[<div class="quotebox"><cite>Serg_ пишет:</cite><blockquote><p>Я просто не пойму - это рекомендация, как то связано со спецификой Lua или</p></blockquote></div><p>Рекомендация связана с напоминанием о том, что в рамках Lua-Quik функции в такой dll могут вызываться из разных потоков одновременно. Что надо сразу учитывать при ее проектировании.<br />и это есть специфика ее применения именно в рамках Lua-Quik.</p><p>Если же эту dll вы будете применять в рамках другого какого-то интерпретатора Lua (не в рамках QUIK), то вероятнее всего никакой многопоточности там не будет.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 21 Sep 2022 18:15:15 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3613#p3613</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3611#p3611</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p><strong>Serg_</strong>,<br />вы описали в довольно общих словах, а потому давать какой-то точный однозначный ответ мне бы не хотелось. Впрочем, вникать в детали вашей задумки и подробно расспрашивать - наверное тоже.</p><p>Рекомендация простая: обращения к объектам, к которым может быть одновременный доступ из нескольких потоков, надо защищать объектами синхронизации.</p><p>Как минимум в вашем описании это объект&nbsp; std::deque, но про него вы и так уже пишете.</p></blockquote></div><p>Я просто не пойму - это рекомендация, как то связано со спецификой Lua или Вы даете рекомендацию по программированию С++ ? <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Wed, 21 Sep 2022 17:25:41 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3611#p3611</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3610#p3610</link>
			<description><![CDATA[<p><strong>Serg_</strong>,<br />вы описали в довольно общих словах, а потому давать какой-то точный однозначный ответ мне бы не хотелось. Впрочем, вникать в детали вашей задумки и подробно расспрашивать - наверное тоже.</p><p>Рекомендация простая: обращения к объектам, к которым может быть одновременный доступ из нескольких потоков, надо защищать объектами синхронизации.</p><p>Как минимум в вашем описании это объект&nbsp; std::deque, но про него вы и так уже пишете.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 21 Sep 2022 17:20:54 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3610#p3610</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3608#p3608</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Внутри C++ кода никто и ни в чем вас не ограничивает <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /><br />Не забывайте только про потенциально возможный вызов функций вашей библиотеки из разных потоков, если в C++ коде будут какие-то глобальные переменные / хранилища. Например, если будете вызывать функции вашей библиотеки из call-back&#039;ов и main() - то как раз возникнет одновременный вызов из разных потоков.</p></blockquote></div><p>Не совсем понял эту мысль. </p><p>Если не сложно, можете объяснить на таком просто примере: предположим я использую блокирующие сокеты на пуле потоков.<br />Предположим из Lua я передал данные и они пришли в dll, я их записываю в очередь std::deque, сам std::deque под мьютексом, если какой то поток из пула потоков свободен я вызываю функцию send().<br />Какая тут может быть потенциальная проблема ?</p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Wed, 21 Sep 2022 13:47:19 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3608#p3608</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3607#p3607</link>
			<description><![CDATA[<p>Внутри C++ кода никто и ни в чем вас не ограничивает <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /><br />Не забывайте только про потенциально возможный вызов функций вашей библиотеки из разных потоков, если в C++ коде будут какие-то глобальные переменные / хранилища. Например, если будете вызывать функции вашей библиотеки из call-back&#039;ов и main() - то как раз возникнет одновременный вызов из разных потоков.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 21 Sep 2022 13:39:23 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3607#p3607</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3606#p3606</link>
			<description><![CDATA[<p>А действительно работает да, Спасибо!</p><p>Получается, можно сделать такую простую вещь: просто из Lua передавать данные в dll, а в dll уже подключить к примеру boost asio и просто передавать эти данные на какой нибудь локальный порт, а в самом приложении уже подключить сервер boost asio и принимать эти данные ? Чтобы не мучатся с Luasocket и тому подобному.</p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Wed, 21 Sep 2022 13:26:51 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3606#p3606</guid>
		</item>
		<item>
			<title><![CDATA[Re: Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3605#p3605</link>
			<description><![CDATA[<div class="quotebox"><cite>Serg_ пишет:</cite><blockquote><p>Функция сама вызывается, но код С/С++ - не выполняется.</p></blockquote></div><p>Что значит &quot;<em>код С/С++ - не выполняется</em>&quot;?</p><p>Если вы в Lua-скрипте напишете<br /></p><div class="codebox"><pre><code>message(lua_dll_x64_name.TestFunc())</code></pre></div><p>то у вас отобразится в QUIK окно с сообщением &quot;Привет из C/C++&quot;, так?<br />Значит код С/С++ выполняется, значение из функции, расположенной в dll, в Lua передается.</p><p>Но консоли-то у вас нет в случае dll-библиотеки, она просто не создана, вот вы и не видите как и что в нее выводится.</p><p>Удобнее вместо консоли будет писать в файл из С++ кода (этакий лог).</p><p>Еще удобно использовать функцию OutputDebugString (это WinAPI функция)<br />Каким инструментом просматривать результат её работы написано в этой теме [url]https://quik2dde.ru/viewtopic.php?id=108[/url] (там про применение в Lua-скриптах, но суть от этого не меняется, представление как работать с результатами этой функции та тема даёт).</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 21 Sep 2022 12:54:10 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3605#p3605</guid>
		</item>
		<item>
			<title><![CDATA[Можно ли вывести в консоль из C++ библиотеки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3604#p3604</link>
			<description><![CDATA[<p>Подскажите пожалуйста, а из скрипта Lua в итоге можно вызывать С или С++ код в dll ?<br />Я попробовал в тестовой функции вызвать просто вывод на консоль:</p><p>//=== Реализация функций, вызываемых из LUA ====================================================================//<br /></p><div class="codebox"><pre><code>static int forLua_TestFunc(lua_State* L) 
{
    printf(&quot;Hello, World!&quot;);
    std::cout&lt;&lt; &quot;Hello, World!&quot;&lt;&lt;std::endl;

    lua_pushstring(L, &quot;Привет из C/C++&quot;);
    return(1);
}</code></pre></div><p>Функция сама вызывается, но код С/С++ - не выполняется.</p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Wed, 21 Sep 2022 12:19:57 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3604#p3604</guid>
		</item>
	</channel>
</rss>
