22

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

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

背景与研究:

我得到了一个名为proprietary.lib. 我很好奇,因为我以前从未见过.lib扩展名,所以我输入了:

file proprietary.lib

输出是:

proprietary.lib:  current ar archive

我做了一些研究,发现这ar或多或少tar(事实上,我想在大多数 *nix 环境中tar已经被取代了)。ar

在检查ar手册页后,我看到了t option,它显示了该存档内容的表格列表。凉爽的。所以我输入:

ar t proprietary.lib

并得到:

proprietary.dll
proprietary.dll
... (snip X lines) ...
4

5 回答 5

15

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

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

于 2018-01-08T17:05:41.353 回答
9

.dll 文件通常是 Windows 共享库。(也有可能有人在 Linux 上构建了一个常规的 Linux 库并出于某种原因将其称为 .dll。)

您可以使用Wine链接它们。对此的支持曾经是实验性的——我不知道它的当前状态。

于 2010-03-29T14:31:55.290 回答
8

您可以尝试提取ar文件(Debian 软件包是ar文件,fwiw)并file在内容上运行。

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

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

话虽这么说……祝你好运。我讨厌针对我拥有文档和源代码的第三方库进行编程。

于 2010-03-29T14:32:37.247 回答
0

是的,我们可以在 wine 的帮助下使用 dll。只需在 linux 中安装 wine64

sudo apt-get install wine64
于 2019-03-15T13:10:40.497 回答
0

普通的 DLL 文件是 Windows 的链接库,因此它们不能直接在 Linux 上运行,但是可以使用 .NET Core 专门为 Linux 编译 DLL 文件。

于 2019-12-18T13:53:40.240 回答