Использование библиотек DLL Windows в переносимом приложении

StackOverflow https://stackoverflow.com/questions/276562

Вопрос

Я создал приложение для Windows C ++, которое я хотел бы перенести на linux.Основными причинами для этого является простота обслуживания системы нашим ИТ-персоналом.За исключением одной машины с Windows, на которой запущено это приложение, мы работаем только под Linux.

Причина, по которой это приложение было встроено в - и работает в- Windows, заключается в том, что оно использует Windows API (dll и заголовок) для подключения к серверу, принадлежащему внешней стороне.Это соединение использует какой-то проприетарный протокол, с которым я действительно не хочу связываться (и я думаю, что по контракту мне это запрещено), поэтому я застрял с .dll.

Эта библиотека DLL является Windows только из-за (я подозреваю) специфичного для Windows sockets кода в библиотеке dll.Кроме того, он не делает много продвинутых вещей.Есть ли способ где-нибудь между простым запуском приложения в linux в WINE и отслеживанием протокола и переопределением библиотеки DLL самостоятельно, что позволит мне запустить это приложение на компьютере с Linux?

Эта идея была вдохновлена этим статья о QT creator так что любое решение, которое позволит мне поиграть с этим, было бы очень крутым.

Это было полезно?

Решение

Наиболее очевидной промежуточной точкой было бы использование Винный погреб.Я не знаю, может ли он напрямую ссылаться на собственную библиотеку DLL, но если нет, то вы, вероятно, могли бы загрузить его с помощью LoadLibrary().

Затем вы могли бы разделить свое приложение на две части:оболочка, которая вызывает только библиотеку DLL, а остальной код взаимодействует с вашей оболочкой.Вы могли бы иметь и то, и другое в отдельных процессах, и, таким образом, только оболочка должна была бы быть скомпилирована с Winelib.Затем остальная часть приложения может использовать любой фреймворк, который вы хотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top