可以在Linux上使用.dll

ran*_*ero 17 linux dll gcc unix-ar

问题:是否可以使用.dll文件在linux上编译程序?

这是怎么回事: 这个.dll将用于编写来自第三方的某些专有软件的php扩展.

背景与研究:

我得到了一个名为的图书馆proprietary.lib.我很好奇,因为我之前从未见过.lib扩展,所以我打字:

file proprietary.lib
Run Code Online (Sandbox Code Playgroud)

输出是:

proprietary.lib:  current ar archive
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,发现它ar或多或少tar(事实上​​,我认为tar已经ar在大多数*nix环境中被替换).

在检查该ar联机帮助页时,我看到了该页面t option,其中显示了该存档内容的表格列表.凉.所以我键入:

ar t proprietary.lib
Run Code Online (Sandbox Code Playgroud)

得到:

proprietary.dll
proprietary.dll
... (snip X lines) ...
Run Code Online (Sandbox Code Playgroud)

Ber*_*Ber 10

最近的开发可能改变了这种情况:Linux 有一个loadlibrary函数,可以加载Windows DLL,然后调用其中的函数.

因此,如果.dll您实际拥有的文件是Windows DLL,您可能会找到在软件中使用它的方法.


Mar*_*ett 8

.dll文件通常是Windows共享库.(也有可能Linux上的某个人已经建立了一个普通的Linux库并且出于某种原因称它为.dll.)

您可以使用Wine链接它们.对此的支持曾经作为实验支持 - 我不知道它的当前状态.

  • Python 世界中有一个名为 [zugbruecke](https://github.com/pleiszenburg/zugbruecke) 的项目,它让您可以在 Linux 或 MacOS 上访问和运行 Windows DLL - 在内部它也使用 Wine。 (2认同)

Bro*_*oam 7

您可以尝试解压缩ar文件(Debian包是ar文件,fwiw)并运行file内容.

如果没有翻译,您将无法使用Windows DLL.我所知道的唯一在Linux上本机工作的DLL文件是用Mono编译的.

如果有人给你一个专有的二进制库来编码,你应该验证它是为目标架构编译的(就像在x86系统上尝试使用ARM二进制文件一样)并且它是为Linux编译的.

那就是说...祝你好运.我讨厌针对我拥有文档源代码的第三方库编程.