<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_4_subsect_6_thread_3742"  />
<title>rulinux.net - Форум - Development - Передача данных из 32битной библиотеки в 64битную программу</title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Форум - Development - Передача данных из 32битной библиотеки в 64битную программу</title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>Re: Передача данных из 32битной библиотеки в 64битную программу</title>
<link>https://rulinux.net/message.php?newsid=3742&amp;page=1#21643</link>
<guid>https://rulinux.net/message.php?newsid=3742&amp;page=1#21643</guid>
<pubDate>Mon, 24 Aug 2009 08:21:18 +0400</pubDate>
<description><![CDATA[<p style="font-style:italic">&gt; Попробуй рассмотреть возможность передавать параметры туда и обратно в символьном виде.</p><p>Спасибо за совет, пожалуй, так и сделаю.</p>]]></description>
</item>
<item>
<title>Re: Передача данных из 32битной библиотеки в 64битную программу</title>
<link>https://rulinux.net/message.php?newsid=3742&amp;page=1#21642</link>
<guid>https://rulinux.net/message.php?newsid=3742&amp;page=1#21642</guid>
<pubDate>Thu, 20 Aug 2009 15:43:44 +0400</pubDate>
<description><![CDATA[<p style="font-style:italic">&gt; Как-нибудь это можно обойти?</p><p>ИМХО нет. В пределах одного процесса нету никакой возможности смешивать 32 и 64 битные коды. Если есть исходник либы, лучше всего рассмотреть вопрос о перекомпилировании в таргет нужной битности.</p><p style="font-style:italic">&gt с пайпами работал, но бинарные данные разных архитектур не передавал</p><p>Передавать двоичные данные в такой ситуации любым способом, будь то через shared mem или потоки, весьма чревато багами. На одной из сторон придётся явно указать размер для всех  типов данных, к которым обращаешся. Попробуй рассмотреть возможность передавать параметры туда и обратно в символьном виде. Будет, как сам понимаешь, несколько медленно, однако, судя по тому что всё равно используешь скриптовое, это не должно тебя напрячь. Не забывай, что в фортране функция может менять свои аргументы.</p>]]></description>
</item>
<item>
<title>Передача данных из 32битной библиотеки в 64битную программу</title>
<link>https://rulinux.net/message.php?newsid=3742&amp;page=1#21641</link>
<guid>https://rulinux.net/message.php?newsid=3742&amp;page=1#21641</guid>
<pubDate>Thu, 20 Aug 2009 09:47:00 +0400</pubDate>
<description><![CDATA[<p>Есть библиотека, написанная на фортране, в которой используется различные "умные" трюки вроде хранения в одном массиве integer, real и character. В результате она корректно работает только на 32битной архитектуре. Хочется написать к ней интерфейс в скриптовые языки, но у моей рабочей машины 64битная архитектура, и при попытке подлючения библиотеки dlopen справедливо возвращает NULL. Как-нибудь это можно обойти? Можно специфично для архитектуры: amd64, GNU/Linux, gcc/gfortran. Исходники библиотеки есть, но много править там не хочется.</p><p>Сейчас меня эта библиотека интересует только как интерфейс к бинарным файлам, производимым одной программой из её же комплекта поставки, поэтому я подумываю о возможности обмена данными через пайпы/сокеты или расшаривания области памяти между двумя процессами. Ни то, ни другое я раньше не делал (ну, с пайпами работал, но бинарные данные разных архитектур не передавал). Может, у кого-нибудь есть идеи попроще?</p>]]></description>
</item>
</channel>
</rss>