Привет всем!
Имеется libftd2xx.so экспортирующая ф-ии, например, FT_ListDevices.
Имеется виндовс-приложение использующее ftd2xx.dll (виндовс версию той же библиотеки, она устанавливается с драйверами ftdichip.com).
Существует обёртка
http://2065.nm.ru/soft/gatopeichs_ftdi_wrapper.rar которая позволяет обращаться через неё к libftd2xx.so приложениям из под wine, она реализована библиотекой ftd2xx.dll.so,
НО, ко всем внешним именам добавляется префикс FTD2XX_, например, вышеупомянутая ф-ия FT_ListDevices становится FTD2XX_FT_ListDevices и т.д.
Чтобы не переделывать приложение я решил сделать ещё одну обёртку, в виде виндовой dll, которая будет экспортировать имена без префикса, и, при обращениям к ним вызывать предыдущую обёртку.
Перекомпилировал ftd2xx.dll.so в ftdiwrap.dll.so.
Cделал тривиальную ftd2xx.dll в которой по внешнему имени FT_ListDevices вызывается TD2XX_FT_ListDevices из ftdiwrap.dll.
Положил ftd2xx.dll в каталог приложения.
В результате wine: Unhandled stack overflow.
Для контроля сделал в винде промежуточную обёртку ftdiwrap.dll при обращении к её ф-ии TD2XX_FT_ListDevices вызывающую FT_ListDevices из ftd2xx_.dll, переименовал настоящую ftd2xx.dll в ftd2xx_.dll — приложение в настоящей винде беспроблемно работает. Вызовы идут так:
приложение из тривиальной ftd2xx.dll вызывает FT_ListDevices
ftd2xx.dll вызывает TD2XX_FT_ListDevices из ftdiwrap.dll
ftdiwrap.dll вызывает FT_ListDevices из ftd2xx_.dll (настоящая ftd2xx.dll, переименованная).
Получается, что в wine так нельзя? Или както можно?