SWIG CYGWIN DLL связывание - PullRequest
       15

SWIG CYGWIN DLL связывание

1 голос
/ 07 января 2012

Я пытаюсь следовать примеру SWIG Java, расположенному здесь .Этот пример использует Cygwin для компиляции.Я хотел бы передать компилятору уже скомпилированную dll, test.dll, вместо исходного файла C.В примере SWIG.org используется C-источник.Я попытался передать test.dll (скомпилированный исходный код C), а затем example.dll третьей команде, но получаю сообщение об ошибке «test.dll: такого файла или каталога нет».Третья команда примера SWIG.org создает файл example.dll на основе example.c.Как я могу создать example.dll, чтобы он использовал test.dll вместо example.c?

Есть ли способ сделать это в контексте этого примера?

Моя попытка без источника C, просто dll:

$ swig -java example.i

$ gcc example_wrap.c -I / c / jdk1.6.0_30 / include -I / c / jdk1.6.0_30 / include / win32

$ gcc-shared example_wrap.o -mno-cygwin -Wl, - add-stdcall-alias -o test.dll example.dll

SWIG.org Пример кода:

$ swig -java example.i
$ gcc **-c example.c** example_wrap.c -I/c/jdk1.3.1/include -I/c/jdk1.3.1/include/win32
$ gcc -shared example.o  example_wrap.o -mno-cygwin -Wl,--add-stdcall-alias  -o example.dll

1 Ответ

1 голос
/ 08 января 2012

Вам нужно передать test.dll последней команде, которая связывает вашу программу, а не второй, которая просто компилирует исходный файл example_wrap.c.(Параметр -c указывает gcc только на компиляцию.)

Обратите внимание, что упорядочение объектов и библиотек DLL в строке ссылок важно.Библиотеки DLL должны появляться после всего, что их использует.

...