The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как запускать Windows dll-ку из под Linux"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как запускать Windows dll-ку из под Linux"
Сообщение от Vetal emailИскать по авторуВ закладки on 23-Июл-03, 18:43  (MSK)
Как запускать Windows dll-ку из под Linux
Всем привет!
Проблема следующая: В свое время мы на фирме написали приложение под Виндовс. Теперь стоит задача переписать его под Линух. Проблема в том, что в этом приложении используется длл-ка от стороннего производителя. Исходников длл-ки нет. Поэтому хотел спросить: как можно сделать так, чтобы можно было вызывать функции этой длл-ки из под Линух.

Заранее спасибо

Виталий Б.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Как запускать Windows dll-ку из под Linux"
Сообщение от Max Zinal emailИскать по авторуВ закладки on 23-Июл-03, 20:04  (MSK)
>Как запускать Windows dll-ку из под Linux
>Всем привет!
>Проблема следующая: В свое время мы на фирме написали приложение под Виндовс.
>Теперь стоит задача переписать его под Линух. Проблема в том, что
>в этом приложении используется длл-ка от стороннего производителя. Исходников длл-ки нет.
>Поэтому хотел спросить: как можно сделать так, чтобы можно было вызывать
>функции этой длл-ки из под Линух.
>
>Заранее спасибо
>
>Виталий Б.

Советую посмотреть в сторону Wine. Должен заметить, что
внедрить оную DLLку в Linuxовый процесс вам не удастся.
Либо полностью Виндозное приложение, запускаемое в
эмуляторе, либо Линуксовый процесс, запускающий эмулятор
для выполнения маааленького участка кода, в коем используется
эта DLLка и передающего результат Линуксовому процессу.

Успехов!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Как запускать Windows dll-ку из под Linux"
Сообщение от Vetal emailИскать по авторуВ закладки on 24-Июл-03, 14:48  (MSK)
Я так понял, есть следующие варианты решения моей проблемы:
1) Написать маленькое Виндовс-приложение, которое содержит вызовы к моей Windows длл-ке. Это приложение работает например через командную строку. Опрашивая определенный параметр в коммандной строке приложение вызывает определенную функцию длл-ки. Порядок работы с длл-кой я вижу таким: моя линуховая прога вызывает виндовую прогу через Wine с определенным списком параметров коммандной строки. Виндовая прога дергает нужную функцию длл-ки и возвращает результат (интересно, как?).
2) Использовать WineLib для перекомпиляции моей виндовой длл-ки. Я так понял, можно взять бинарную длл-ку без исходников, и WineLib может сделать из нее линуховый бинарник?
3) Лучшим выходом из положения было-бы переписать длл-ку самостоятельно. Вот только проблема в чем. Эта длл-ка - это длл-ка от стороннего производителя. Она реализует часть функций набора компонент для сжатия файлов ZipTV. В частности, мы используем алгоритм BlackHole для упаковки файлов. От использования этого алгоритма мы отказаться не можем.  Этот алгоритм является фирменным закрытым алгоритмом производителя этих компонент для Дельфи. Поэтому переписать нам этот алгоритм не получится. Я пытался найти библиотеку, реализующую этот алгоритм для Линуха. Так и не нашел :(
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Как запускать Windows dll-ку из под Linux"
Сообщение от Max V. Zinal emailИскать по авторуВ закладки on 24-Июл-03, 20:30  (MSK)
>Я так понял, есть следующие варианты решения моей проблемы:
>1) Написать маленькое Виндовс-приложение, которое содержит вызовы к моей
>Windows длл-ке. Это приложение работает например через командную строку.
>Опрашивая определенный параметр в коммандной
>строке приложение вызывает определенную функцию длл-ки.
>Порядок работы с длл-кой я вижу таким: моя линуховая прога вызывает
>виндовую прогу через Wine с определенным списком параметров коммандной строки.
>Виндовая прога дергает нужную функцию длл-ки
>и возвращает результат (интересно, как?).

Вполне работоспособный вариант. Проблемы будут как раз с обменом данными
между Linux-овой и Windoze-ной частями.
Можно поплясать вокруг временных файлов либо (как бы смешно это ни звучало)
вокруг сокетов семейства AF_INET.

>2) Использовать WineLib для перекомпиляции моей виндовой длл-ки. Я так понял, можно
>взять бинарную длл-ку без исходников, и WineLib может сделать из нее
>линуховый бинарник?

Как раз это и есть невозможное дело. Употребить WineLib можно _только_
при наличии исходных кодов той части, коя с ним собирается.

>3) Лучшим выходом из положения было-бы переписать длл-ку самостоятельно.
>Вот только проблема в чем. Эта длл-ка - это длл-ка от стороннего производителя. Она
>реализует часть функций набора компонент для сжатия файлов ZipTV. В частности,
>мы используем алгоритм BlackHole для упаковки файлов. От использования этого алгоритма
>мы отказаться не можем.  Этот алгоритм является фирменным закрытым алгоритмом
>производителя этих компонент для Дельфи. Поэтому переписать нам этот алгоритм не
>получится. Я пытался найти библиотеку, реализующую этот алгоритм для Линуха. Так
>и не нашел :(

Типичный пример отсутствия предварительного (до выбора архитектурных и, в данном
случае, алгоритмических решений) анализа направлений развития софта. Здесь можно
сказать нехилое спасибо Wine за то, что он есть. Говоря откровенно, возможность
бинарника для одной ОС функционировать в совершенно другой, реализующей
принципиально другие наборы API - большая редкость.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Как запускать Windows dll-ку из под Linux"
Сообщение от qq Искать по авторуВ закладки on 25-Июл-03, 00:41  (MSK)
если эта библиотека работает в основном с данными, которые ей передаются через указатели, и не использует большого количества WinAPI функций, то возможно написать свой загрузчик для нее, эмулировав минимальный набор нужных ей winapi ф-ций. Это в общем-то не так уж и проблематично, документации на формат PE и тулзов для него полно, msdn есть...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Как запускать Windows dll-ку из под Linux"
Сообщение от igor emailИскать по авторуВ закладки on 14-Авг-03, 12:40  (MSK)
>Как запускать Windows dll-ку из под Linux
Доставай уже свою dll по сети !
Вероятно как-то можно собрать всё хозяйство в кучу с помощью apache - cgi.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Как запускать Windows dll-ку из под Linux"
Сообщение от mirya emailИскать по авторуВ закладки on 04-Ноя-03, 23:18  (MSK)
  Хорошее, но очень незаконное решение (следует спросить разрешение у тех самых 3rd party programmers) - как я понял, там важен всего один алгоритм рас/запаковки. Взять SoftICE, добраться до входа в соотв. ф-цию и тупо передрать ассемблерный листинг до конца ф-ции. Еще лучше - IDA, она тебе построит дерево вызовов и с большой долей вероятности найдет границы процедуры.
  Конечно, если линуховый вариант будет ехать на другой архитектуре, прийдется попотеть (транслятор комманд одного процессора на арх. другого)
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру