问题:是否可以使用.dll文件在linux上编译程序?
这是怎么回事: 这个.dll将用于编写来自第三方的某些专有软件的php扩展。
背景和研究:
我获得了一个名为proprietary.lib
的库。我很好奇,因为我之前从未见过.lib
扩展,因此我输入了:
file proprietary.lib
输出结果为:
proprietary.lib: current ar archive
我做了一些研究,发现ar
或多或少tar
(实际上,我猜tar
已取代ar
在大多数* nix中环境)。
检查ar
联机帮助页后,我看到了t option
,其中显示了该档案内容的表格列表。凉。所以我输入:
ar t proprietary.lib
得到:
proprietary.dll
proprietary.dll
... (snip X lines) ...
答案 0 :(得分:8)
.dll文件通常是Windows共享库。 (也有可能Linux上的某个人已经构建了一个普通的Linux库,并且出于某种原因称它为.dll。)
您可以使用Wine链接它们。对此的支持曾经作为实验支持 - 我不知道它的当前状态。
答案 1 :(得分:8)
最近的开发可能改变了这种情况:Linux有一个loadlibrary函数,可以加载Windows DLL,然后调用其中的函数。
因此,如果您实际拥有的.dll
文件是Windows DLL,则可以找到在软件中使用它的方法。
答案 2 :(得分:5)
您可以尝试提取ar
文件(Debian软件包是ar
个文件,fwiw)并对内容运行file
。
如果没有翻译,您将无法使用Windows DLL。我所知道的唯一在Linux上本机工作的DLL文件是用Mono编译的。
如果有人给你一个专有的二进制库来编码,你应该验证它是为目标架构编译的(就像在x86系统上尝试使用ARM二进制文件一样)并且它是为Linux编译的。
有人说......祝你好运。我讨厌针对第三方库的编程,其中我有文档和源代码。
答案 3 :(得分:0)
是的,我们可以在wine的帮助下使用dll。 只需在Linux中安装wine64
sudo apt-get install wine64
答案 4 :(得分:0)
普通的DLL文件是Windows的链接库,因此它们不能直接在Linux上运行,但是可以使用.NET Core专门为Linux编译DLL文件。