| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 и их подобным. Не подскажете дизасемблер, который генерил бы код, компилируемый гнусом ? Ну раз уж начал спрашивать... |
| Автор: W4FhLF 27.6.2010, 13:59 |
| Сколько dll весит? Используется только одна функция? Может имеет смысл заюзать IDA+HexRays. Правда это нарушение авторских прав. |
| Автор: borisbn 27.6.2010, 15:08 |
Если ты про IDA+HexRays (кстати, а что это такое? IDA знаю, HexRays - нет), то хез, а dll-ка принадлежит нам (мы её заказали и купили). Всё-таки решил делать примерно так: ![]() Вопрос: кто-нибудь видит проблемы, кроме быстродействия ? |
| Автор: 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 загрузчик) ее использовать. А вот если там есть использование каких либо системных вызовов, то труба |
| Автор: borisbn 28.6.2010, 19:46 |
| xvr, спасибо за наводку. Посмотрел, что она импортирует и увидел nsp (intel'евская библиотека обработки сигнала), а у той, в свою очередь, целый "букет" импортируемых функций из kernel32, user32 и т.п. Решил делать как писал двумя постами выше. Всем спасибо. Закрываю |
| Автор: Amp 29.6.2010, 11:25 |
| Линуксовый mplayer помнится тащил связку win32-кодеков в виде кучи dll-ок, я запамятовал - он их каким образом умудрялся использовать? |