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

14 c c++ dll wine

脚本

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

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

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

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

Ser*_*gio 6

似乎有人遇到过类似的问题,或者至少已经预测到了这种情况.包装库应该可以帮助您:

出于这样或那样的原因,您可能会发现自己想要使用Linux库,就好像它是Windows DLL一样.这有多种原因,包括:

...

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

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