Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Использование windows'овской dll в Unix


Автор: borisbn 26.6.2010, 16:10
Доброго времени суток.
Есть проблема: хочу перевести приложение с windows на linux. Моё приложение написано на Qt, и не использует ничего системного, поэтому с ним проблем не должно быть, но в этом приложении используется dll-ка, исходников которой у меня нет ( мы её купили в одной конторе без исходников, т.к. с ними было в несколько раз дороже ). Я знаю ( вернее предполагаю ), что dll-ка ничего системного windows'овского не вызывает, только new и delete.
Вопрос: как сделать так, чтобы моё приложение работало на "нативном" linux'е, а dll-ка - не обязательно, например под WINE'ом.

P.S. Очень не хочется переделывать приложение, чтобы общаться по сети с некой обёрткой, работающей под WINE и вызывающей dll-ку.

P.P.S. Похожую тему находил ( http://forum.vingrad.ru/topic-108070.html ), но там у людей либо были исходники, либо они не были против того, чтобы вся программа работала под WINE.


Спасибо.

Автор: bsa 26.6.2010, 22:07
borisbn, найди альтернативу. Что эта DLL делает?

Автор: Sartorius 26.6.2010, 22:36
dll не .NET-овская случайно?

Автор: borisbn 26.6.2010, 23:35
bsa, к сожалению не получится, т.к. она очень специфическая и мы её специально заказывали, писали ТЗ. А делает она определение вида и параметров модуляции по записанному сигналу (квадратуры 8 кГц 16 бит)  
Sartorius, нет. Обычная dll, написанная на Си++ и откомпилированная M$VS 6.0

Автор: kosmonaFFFt 27.6.2010, 10:35
Единственное, что пришло в голову - дизассемблирование под виндой, и компиляция асмом под линуксом...
Т.к. я в асме и всем низкоуровневом не очень силен, не могу сказать насколько это реально...

И еще одна мысль - узнать/посмотреть, как в вайне грузятся виндовые библиотеки, и сделать так же/заюзать код из вайна...

Автор: borisbn 27.6.2010, 12:39
kosmonaFFFt, спасибо. Обе идеи хорошие, тем более, что asm меня совсем не смущает. А WINE-код думаю найти смогу. Ещё раз спасибо за идеи.
P.S. По поводу (диз)асемблера. Насколько я знаю в гнусном ассемблере запись опкодов сильно отличается от masm и их подобным. Не подскажете дизасемблер, который генерил бы код, компилируемый гнусом ?
Ну раз уж начал спрашивать... smile Кто-нибудь знает где можно найти WINE'овские исходники ? Спасибо.

Автор: W4FhLF 27.6.2010, 13:59
Сколько dll весит? Используется только одна функция? Может имеет смысл заюзать IDA+HexRays. Правда это нарушение авторских прав. 

Автор: borisbn 27.6.2010, 15:08
Цитата(W4FhLF @  27.6.2010,  13:59 Найти цитируемый пост)
Правда это нарушение авторских прав

Если ты про IDA+HexRays (кстати, а что это такое? IDA знаю, HexRays - нет), то хез, а dll-ка принадлежит нам (мы её заказали и купили).

Всё-таки решил делать примерно так:
user posted image
Вопрос: кто-нибудь видит проблемы, кроме быстродействия ?

Автор: kosmonaFFFt 27.6.2010, 20:42
Насчет вайновских исходников, спроси у гугла слово wine, дальше по обстоятельствам... ) Я их неоднократно в течении 5 минут так находил...
А еще я тут вспомнил про виндовые LoadLibrary и GetProcAddress или как оно там, и именно их я бы попробовал выдернуть из вайна или заюзать как нибудь напрямую без выдергивания...

Автор: borisbn 28.6.2010, 08:28
kosmonaFFFt, думаю тут LoadLibrary и GetProcAddress не обойдёшься, т.к. dll-ка вызывает RTL-функции visual C new и delete

Автор: xvr 28.6.2010, 16:47
Посмотри, что dll импортирует из Windows. Если там ничего системного нет, то действительно можно напрямую (выдрав из Wine загрузчик) ее использовать. А вот если там есть использование каких либо системных вызовов, то труба  smile 

Автор: borisbn 28.6.2010, 19:46
xvr, спасибо за наводку. Посмотрел, что она импортирует и увидел nsp (intel'евская библиотека обработки сигнала), а у той, в свою очередь, целый "букет" импортируемых функций из kernel32, user32 и т.п.
Решил делать как писал двумя постами выше.
Всем спасибо. Закрываю 

Автор: Amp 29.6.2010, 11:25
Линуксовый mplayer помнится тащил связку win32-кодеков в виде кучи dll-ок, я запамятовал - он их каким образом умудрялся использовать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)