Есть ли способ связать мою программу с компилированной частью Wine? - PullRequest
3 голосов
/ 11 апреля 2010

Я пытаюсь использовать функциональность Windows DLL в Linux. Мое текущее решение - это компиляция отдельного приложения Wine, которое использует dll и передает запросы / ответы между dll и основным приложением через IPC.

Это работает, но это накладные расходы по сравнению с простыми вызовами DLL.

Я вижу, что программа, скомпилированная с вином, обычно представляет собой загрузочный скрипт и некоторые .so, которые (в соответствии с утилитой file ) являются обычной динамически связанной библиотекой linux.

Есть ли способ связать это .so напрямую с моим приложением? Есть ли руководство?

1 Ответ

6 голосов
/ 11 апреля 2010

Вы можете использовать Winelib для написания приложения для Linux, которое может использовать библиотеки DLL Windows.

EDIT:

Для дальнейшего использования:

libtest.c:

#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[])
{
  HMODULE h;

  h = LoadLibrary("cards.dll");
  printf("%d\n", h);
}

Исполнение:

$ winegcc -m32 libtest.c 
$ ./a.out
536936448
...