Можно использовать .dll в Linux - PullRequest
16 голосов
/ 29 марта 2010

Вопрос: Можно ли скомпилировать программу на linux, используя файл .dll?

Куда это идет: Этот .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) ...

Ответы [ 4 ]

8 голосов
/ 08 января 2018

Недавняя разработка, возможно, изменила ситуацию: для Linux доступна функция loadlibrary , которая позволяет загружать Windows DLL и затем вызывать функции внутри.

Итак, если файл .dll, который у вас есть, на самом деле представляет собой Windows DLL, вы можете найти способ использовать его в своем программном обеспечении.

8 голосов
/ 29 марта 2010
Файлы

.dll обычно являются общими библиотеками Windows. (Также возможно, что кто-то в Linux создал по какой-то причине обычную библиотеку Linux и назвал ее .dll.)

Возможно, вы можете связать их, используя Wine . Поддержка этого была когда-то экспериментальной - я не знаю ее нынешний статус.

5 голосов
/ 29 марта 2010

Вы можете попробовать извлечь файл ar (пакеты Debian - это ar files, fwiw) и запустить file для содержимого.

Вы не сможете использовать Windows DLL без перевода. Единственные известные мне DLL-файлы, которые изначально работают в Linux, скомпилированы с Mono.

Если кто-то дал вам проприетарную двоичную библиотеку для кодирования, вы должны убедиться, что она скомпилирована для целевой архитектуры (нет ничего лучше попытки использовать двоичный файл ARM в системе x86) и что она скомпилирована для Linux.

Как говорится ... удачи. Я ненавижу программирование против сторонних библиотек, где у меня есть документация и источник.

0 голосов
/ 15 марта 2019

Да, мы можем использовать DLL с помощью вина.просто установите Wine64 в Linux

sudo apt-get install wine64
...