DLL Windows в системе Linux

Мне интересно, если вы можете загрузить DLL, операционной системы Windows (например, user32.dll), в приложение (на любом языке программирования) с Linux операционной системы.

DLL будет находиться в каталоге файловой системы Linux.

Спасибо за помощь.

Привет!

6 ответов


нет. Архитектура принципиально отличается.

замечу ваш вопрос помечен на C++. Если это была .NET DLL (построенная с байт-кодом CLR) , то вы может ссылка на него через приложение, работающее под управлением Mono.


Да, вы можете загрузить DLL и вызвать ее функции с помощью соответствующей библиотеки-оболочки, но это принципиально бесполезно, если сама DLL имеет зависимости от платформы, которых нет. Этот подход используется для таких вещей, как видеокодеки с закрытым исходным кодом, где нет (нетривиальных) зависимостей.

библиотека user32.dll, конечно, является частью ОС и внутренне связана со многими функциями ядра NT, ни одна из которых не существует в Linux. Вино не использует окна библиотека user32.dll, но предоставляет свою собственную версию, которая дает эквивалентную функциональность.

загрузка Windows ' user32.dll определенно не будет полезна, так как она в основном будет оберткой для других DLL, процессов (например, CSRSS) и вызовов ядра, которых нет в Linux. Вы может загрузить и использовать одно вино.


Это возможно, если вы напишите обертку для него. Вот как кодеки для Win32 работа на Linux. Также вина использует много библиотек DLL.


вы, вероятно, могли бы сделать пользовательскую сборку вина (Домашняя страница, Википедия страницы) для вашего приложения. Мы говорим о большой молоток, хотя. :-)


DLL-это формат для windows (т. е. реализация MS концепции общей библиотеки).
Это не в формате, который понимает Linux.
Linux использует формат ELF для динамических библиотек.


почему вы хотите это сделать? Для выполнения программы (.exe), который использует эту DLL? В этом случае вам нужен эмулятор Windows на вашей машине Linux, например вина.