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

时间:2016-09-19 13:24:59

标签: c++ c dll wine

方案

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

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

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

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

1 个答案:

答案 0 :(得分:7)

似乎有人遇到过类似的问题,或者至少预测过这种情况。 Wrapper-library可以帮助您:

  

出于某种原因,您可能会发现自己使用的是Linux库   您想要使用它就像它是一个Windows DLL。有各种各样的   原因如下:

     

...

     
      
  1. 您只能使用二进制Windows应用程序进行扩展   通过插件,例如文本编辑器或IDE。
  2.   

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