anonymous@RULINUX.NET~# Last login: 2024-03-29 02:12:16
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

Передача данных из 32битной библиотеки в 64битную программу

Есть библиотека, написанная на фортране, в которой используется различные "умные" трюки вроде хранения в одном массиве integer, real и character. В результате она корректно работает только на 32битной архитектуре. Хочется написать к ней интерфейс в скриптовые языки, но у моей рабочей машины 64битная архитектура, и при попытке подлючения библиотеки dlopen справедливо возвращает NULL. Как-нибудь это можно обойти? Можно специфично для архитектуры: amd64, GNU/Linux, gcc/gfortran. Исходники библиотеки есть, но много править там не хочется.

Сейчас меня эта библиотека интересует только как интерфейс к бинарным файлам, производимым одной программой из её же комплекта поставки, поэтому я подумываю о возможности обмена данными через пайпы/сокеты или расшаривания области памяти между двумя процессами. Ни то, ни другое я раньше не делал (ну, с пайпами работал, но бинарные данные разных архитектур не передавал). Может, у кого-нибудь есть идеи попроще?

anonymous(*) (2009-08-20 13:47:00)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.9) Gecko/2009050519 Iceweasel/3.0.6 (Debian-3.0.6-1)

[Ответить на это сообщение]
avatar
Скрыть

Re: Передача данных из 32битной библиотеки в 64битную программу

> Как-нибудь это можно обойти?

ИМХО нет. В пределах одного процесса нету никакой возможности смешивать 32 и 64 битные коды. Если есть исходник либы, лучше всего рассмотреть вопрос о перекомпилировании в таргет нужной битности.

> с пайпами работал, но бинарные данные разных архитектур не передавал

Передавать двоичные данные в такой ситуации любым способом, будь то через shared mem или потоки, весьма чревато багами. На одной из сторон придётся явно указать размер для всех типов данных, к которым обращаешся. Попробуй рассмотреть возможность передавать параметры туда и обратно в символьном виде. Будет, как сам понимаешь, несколько медленно, однако, судя по тому что всё равно используешь скриптовое, это не должно тебя напрячь. Не забывай, что в фортране функция может менять свои аргументы.

bugmaker(*)(2009-08-20 19:43:44)

Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.13) Gecko/2009080315 Ubuntu/9.04 (jaunty) Firefox/3.0.13
avatar
Скрыть

Re: Передача данных из 32битной библиотеки в 64битную программу

> Попробуй рассмотреть возможность передавать параметры туда и обратно в символьном виде.

Спасибо за совет, пожалуй, так и сделаю.

anonymous(*)(2009-08-24 12:21:18)

Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.9) Gecko/2009050519 Iceweasel/3.0.6 (Debian-3.0.6-1)
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!