Всем привет!
Проблема следующая: В свое время мы на фирме написали приложение под Виндовс. Теперь стоит задача переписать его под Линух. Проблема в том, что в этом приложении используется длл-ка от стороннего производителя. Исходников длл-ки нет. Поэтому хотел спросить: как можно сделать так, чтобы можно было вызывать функции этой длл-ки из под Линух.
На данном этапе я вижу следующие варианты решения моей проблемы:
1) Написать маленькое Виндовс-приложение, которое содержит вызовы к моей Windows длл-ке. Это приложение работает например через командную строку. Опрашивая определенный параметр в коммандной строке приложение вызывает определенную функцию длл-ки. Порядок работы с длл-кой я вижу таким: моя линуховая прога вызывает виндовую прогу через Wine с определенным списком параметров коммандной строки. Виндовая прога дергает нужную функцию длл-ки и возвращает результат (интересно, как?).
2) Использовать WineLib для перекомпиляции моей виндовой длл-ки. Я так понял, можно взять бинарную длл-ку без исходников, и WineLib может сделать из нее линуховый бинарник?
3) Лучшим выходом из положения было-бы переписать длл-ку самостоятельно. Вот только проблема в чем. Эта длл-ка — это длл-ка от стороннего производителя. Она реализует часть функций набора компонент для сжатия файлов ZipTV. В частности, мы используем алгоритм BlackHole для упаковки файлов. От использования этого алгоритма мы отказаться не можем. Этот алгоритм является фирменным закрытым алгоритмом производителя этих компонент для Дельфи. Поэтому переписать нам этот алгоритм не получится. Я пытался найти библиотеку, реализующую этот алгоритм для Линуха. Так и не нашел
Всем заранее спасибо
Виталий Б
Re: Как запускать Windows dll-ку из под Linux
От:
Аноним
Дата:
24.07.03 12:48
Оценка:
Здравствуйте, VitalyB, Вы писали:
VB>Проблема следующая: В свое время мы на фирме написали приложение под Виндовс. Теперь стоит задача переписать его под Линух. Проблема в том, что в этом приложении используется длл-ка от стороннего производителя. Исходников длл-ки нет. Поэтому хотел спросить: как можно сделать так, чтобы можно было вызывать функции этой длл-ки из под Линух.
Похоже, что это засада.
VB>На данном этапе я вижу следующие варианты решения моей проблемы: VB>1) Написать маленькое Виндовс-приложение, которое содержит вызовы к моей Windows длл-ке. Это приложение работает например через командную строку. Опрашивая определенный параметр в коммандной строке приложение вызывает определенную функцию длл-ки. Порядок работы с длл-кой я вижу таким: моя линуховая прога вызывает виндовую прогу через Wine с определенным списком параметров коммандной строки. Виндовая прога дергает нужную функцию длл-ки и возвращает результат (интересно, как?).
Если dll используется часто, то лучше держать приложение, загруженным и обмениваться данными, например, через файл. А вообще можно взять исходники wine и доработать его до вида, приемлимого для прямого взаймодействия программы и той злосчастной dllки, правда это трудоемко, зато довольно прямой способ.
VB>2) Использовать WineLib для перекомпиляции моей виндовой длл-ки. Я так понял, можно взять бинарную длл-ку без исходников, и WineLib может сделать из нее линуховый бинарник?
WineLib, насколько мне известно, нужен для компиляции исходников для Win32. Про конвертацию бинарников звучит как-то невероятно.
VB>3) Лучшим выходом из положения было-бы переписать длл-ку самостоятельно. Вот только проблема в чем. Эта длл-ка — это длл-ка от стороннего производителя. Она реализует часть функций набора компонент для сжатия файлов ZipTV. В частности, мы используем алгоритм BlackHole для упаковки файлов. От использования этого алгоритма мы отказаться не можем. Этот алгоритм является фирменным закрытым алгоритмом производителя этих компонент для Дельфи. Поэтому переписать нам этот алгоритм не получится. Я пытался найти библиотеку, реализующую этот алгоритм для Линуха. Так и не нашел
Если этот алгоритм так важен, то возможно его будет проще всего лицензировать. В качестве альтернативы можно расковырять dll, понять как работает алгоритм и написать свою реализацию.
Здравствуйте, Аноним, Вы писали:
А>Если dll используется часто, то лучше держать приложение, загруженным и обмениваться данными, например, через файл. А вообще можно взять исходники wine и доработать его до вида, приемлимого для прямого взаймодействия программы и той злосчастной dllки, правда это трудоемко, зато довольно прямой способ.
А разве обмен через файл будет самым лучшим вариантом? Может есть возможность сделать как-то через pipes или через другие способы Inter Process Communication?
Re[3]: Как запускать Windows dll-ку из под Linux
От:
Аноним
Дата:
25.07.03 05:28
Оценка:
Здравствуйте, VitalyB, Вы писали:
VB>Здравствуйте, Аноним, Вы писали:
А>>Если dll используется часто, то лучше держать приложение, загруженным и обмениваться данными, например, через файл. А вообще можно взять исходники wine и доработать его до вида, приемлимого для прямого взаймодействия программы и той злосчастной dllки, правда это трудоемко, зато довольно прямой способ.
VB>А разве обмен через файл будет самым лучшим вариантом? Может есть возможность сделать как-то через pipes или через другие способы Inter Process Communication?
Конечно так будет более правильно, но я вообще редко использовал Wine, поэтому не уверен удастся ли подсунуть программе в Wine в качестве файла файла линуксовый пайп (который mkfifo).