Подтвердить что ты не робот

Можно ли вызвать собственный Linux API из приложения Windows, работающего в Wine?

Сценарий

У меня есть плагин (dll), написанный для приложения Windows (на С++).

Это приложение отлично работает в Linux под Wine, однако в плагине я хотел бы использовать функцию, которая еще не доступна в Wine.

Предполагая, что во время выполнения я могу обнаружить, что приложение работает в Wine, могу ли я динамически загружать собственную библиотеку Linux (или получить доступ к родному API-интерфейсу Linux любым другим способом) для эмуляции указанной функции?

Мне любопытно, можно ли это сделать без серьезного взлома.

4b9b3361

Ответ 1

Кажется, что кто-то сталкивался с подобной проблемой или, по крайней мере, предсказал такую ​​ситуацию. Библиотека Wrapper должна помочь вам:

По той или иной причине вы можете оказаться в библиотеке Linux что вы хотите использовать, как если бы это была DLL Windows. Существуют различные причины для этого включают следующее:

...

  1. У вас есть двоичное только приложение Windows, которое может быть расширено через плагины, такие как текстовый редактор или IDE.

В нескольких словах вы должны создать тонкую вине builtin-dll, которая действует как мост между ABI вашего PE-бинарного и ABI собственной библиотеки Linux. Затем вы должны связать свой код с этой оболочкой. Для распространения Windows вы можете предоставить "обертку" пустыми заглушками. Такой подход позволяет вам использовать один бинарный файл для вашего плагина, который будет использовать библиотеку DLL для конкретных вин в Linux и заглушку DLL в Windows.