0

我目前正在开发一个 Java 项目,该项目将被添加到现有的更大系统中。与系统的通信是基于 XML 通过网络连接进行的。

问题是这个系统是用 C++ 编写的,并且他们提供给我们以便与系统通信的库是一个基于 C++ 的静态库 ( .lib)。我们有该库的头文件,因此我能够.java使用 SWIG 生成相应的包装文件。

现在我面临的问题是如何在我的中包含这个静态库.dll,它将用于接收来自 Java 程序的 JNI 调用。

我需要如何调用 gcc 来生成工作的 dll?甚至可以在不访问图书馆资源的情​​况下做到这一点吗?

在此先感谢您提供任何有用的答案。

4

1 回答 1

0

这绝对是可能的 - 当您使用 SWIG 生成的包装器编译和链接 DLL 时,您需要执行以下操作:

g++ -Wall -Wextra -shared -o test.dll test_wrap.cxx -Wl,--whole-archive some.lib

这里的关键是您将 SWIG 包装代码生成的 DLL 与您拥有的 .lib 链接起来。(我没有太多使用 cygwin,但您可能还想-mno-cygwin在此实例中添加编译器标志,具体取决于 .lib 的构建方式)

于 2012-06-03T09:18:53.247 回答