首先是免责声明-我对此有些粗略,自从我使用JNI已经有一段时间了。
许多JNI示例假定您拥有要调用的库的代码,以我的经验,这种情况很少见。在示例中,您可以看到javah
util已用于生成头文件,并针对该头文件编写了cpp实现-这就是为什么您可以在cpp文件中看到jni头文件和各种Java关键字的原因。
为了使用第3方dll,首先需要该dll的文档,否则您将一无所获。需要文档的原因是,您将提供一个仅委托给第三方dll的包装dll-
您需要知道如何调用它以及如何执行任何类型映射。显然,此包装器将包含所有JNI内容,以允许Java对该包装器进行调用,而该包装器又将调用第三方dll。
有多种方法可以做到这一点,但我知道最简单的方法是使用SWIG,它将生成包装dll所需的所有C
代码。如果有人熟悉C ,这也会有所帮助-他们将非常宝贵地编写SWIG用来生成包装器代码的接口文件(.i或.swg文件)。



