是否可以从Wine中运行的Windows应用程序调用本地Linux API

Is it possible to call native Linux API from a Windows application running in Wine?

本文关键字:调用 应用程序 API Linux Windows Wine 运行 是否      更新时间:2023-10-16

场景

我有一个为Windows应用程序(用C++(编写的插件(dll(。

该应用程序在Wine下的Linux上运行良好,但在插件中,我想使用Wine中尚未提供的功能。

假设我可以在运行时检测到应用程序正在Wine中运行,我是否可以动态加载本机Linux库(或以任何其他方式访问本机Linux API(以模拟所述功能?

我很好奇这是否可以在没有任何严重黑客攻击的情况下完成。

似乎有人遇到过类似的问题,或者至少预测到了这种情况。包装库应该能帮助你:

出于这样或那样的原因,您可能会发现自己有一个Linux库要将其用作Windows DLL。有各种各样的原因包括:

  1. 您有一个可以扩展的纯二进制Windows应用程序通过诸如文本编辑器或IDE之类的插件

简而言之,您应该创建瘦Wine内置dll,它就像PE二进制文件的ABI和本地Linux库的ABI之间的桥梁。然后你应该把你的代码链接到这个包装器上。对于Windows发行版,您可以提供带有空存根的"包装器"。这样的方法允许您为插件使用一个二进制文件,该二进制文件将在Linux上使用葡萄酒特定的功能包装器DLL,在Windows上使用存根DLL。