Ошибки при создании библиотеки DLL совместно используемой библиотеки для примера простого Java-пакета, упакованного SWIG (Windows) - PullRequest
1 голос
/ 30 марта 2012

Я просмотрел часто задаваемые вопросы по SWIG и документацию по динамическим модулям, и кажется, что существует множество вариантов при принятии решения о том, как создать библиотеку DLL JNI для Windows. wiki описывает процесс с использованием очень старых версий Visual C ++. Что все используют?

Я установил MinGW и приведенные ниже команды в Windows 7 и выполнил приведенные ниже команды на примере простого Java SWIG, см. Ниже:

  • C: \ swig \ swigwin-2.0.4 \ examples \ java \ simple> swig -java example.i
  • C: \ swig \ swigwin-2.0.4 \ examples \ java \ simple> gcc -c example_wrap.c -I C: \ Программа F iles \ Java \ jdk1.6.0_30 \ include -I C: \ Program Files \ Java \ jdk1.6.0_30 \ include \ win32
  • C: \ swig \ swigwin-2.0.4 \ examples \ java \ simple> gcc -shared example_wrap.o -o example.dll

Последние ошибки команды:

example_wrap.o:example_wrap.c:(.text+0xa9): undefined reference to `gcd'
example_wrap.o:example_wrap.c:(.text+0xe2): undefined reference to `Foo'
example_wrap.o:example_wrap.c:(.text+0xe8): undefined reference to `Foo'
example_wrap.o:example_wrap.c:(.text+0x107): undefined reference to `Foo'
example_wrap.o:example_wrap.c:(.text+0x10d): undefined reference to `Foo'
collect2: ld returned 1 exit status

1 Ответ

2 голосов
/ 02 апреля 2012

Похоже, вы либо не скомпилированы, либо не связаны между собой example.c, только example_wrap.c. Вам нужно сделать что-то вроде:

swig -java example.i
gcc -c example_wrap.c -I somepath -I someotherpath
gcc -c example.c -I somepath -I someotherpath
gcc -shared example_wrap.o example.o -o example.dll
...