方案
我有一个为Windows应用程序编写的插件(dll)(用C ++编写)。
该应用程序在Wine下的Linux上运行良好,但是,在插件中我想使用Wine中尚未提供的功能。
假设我可以在运行时检测到应用程序在Wine中运行,我是否可以动态加载本机Linux库(或以任何其他方式访问本机Linux API)以模拟所述功能?
我很好奇这是否可以在没有任何严重黑客攻击的情况下完成。
答案 0 :(得分:7)
出于某种原因,您可能会发现自己使用的是Linux库 您想要使用它就像它是一个Windows DLL。有各种各样的 原因如下:
...
- 您只能使用二进制Windows应用程序进行扩展 通过插件,例如文本编辑器或IDE。
醇>
简而言之 - 您应该创建精简的Wine builtin-dll,它就像PE二进制文件的ABI和本机Linux库的ABI之间的桥梁。然后你应该将你的代码链接到这个包装器。对于Windows发行版,您可以提供带有空存根的“包装器”。这种方法允许你为你的插件使用一个二进制文件,它将在Linux上使用wine特定的功能包装DLL,在Windows上使用存根DLL。