为SWIG打包的简单Java示例创建共享库DLL的错误(Windows)

时间:2012-03-30 04:24:37

标签: gcc mingw swig

我已经浏览了SWIG FAQ和动态模块文档,在决定如何为Windows构建JNI共享库dll时,似乎有很多选项。 wiki描述了使用非常旧版本的visual c ++的过程。每个人都在使用什么?

我在Windows 7上安装了MinGW及以下命令,并在SWIG简单java示例上运行以下命令,见下文:

  • 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:\ Program 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 个答案:

答案 0 :(得分:2)

看起来你没有编译或没有链接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
相关问题