用C ++为java编译一个dll,调用另一个dll(Eclipse上的JNI)

时间:2016-05-27 08:04:24

标签: java c++ eclipse dll java-native-interface

我实际上正在开发一个在Eclipse上使用JNI的项目。

实际上,我在C ++部分构建了一个dll,我在Java部分使用它。

但是,现在我需要在C ++部分调用一个dll(因为我需要使用现有项目)并使用C ++部分中的函数,然后构建dll以在Java中使用它。所以我需要创建一个调用另一个dll的dll。

我该怎么做?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

要构建一个dll,您可以在创建最终二进制文件时使用编译器的-shared选项。为了在这个dll中使用其他现有的dll,最简单的选择是静态创建链接(不要与链接到静态库混淆,你还会在运行时动态地使用另一个dll本身)。如果您正在执行此操作,则可以使用-l(可能还有-L)开关指定有问题的dll。

例如,假设您的dll将my_dll.dll来自源文件my_dll.cpp并使用名为other_dll.dll的外部dll,您可以使用以下内容:

g++ -c my_dll.cpp
g++ -shared -o my_dll.dll my_dll.o -lother_dll -L/path/to/other/dll

在您的代码(my_dll.cpp)中,您将包含other_dll.dll供应商提供的头文件,以便访问其导出的函数,并从代码中正常调用它们(就像包含的函数一样)来自标头并使用您自己项目的其他cpp文件进行定义。使用other_dll.dll中定义的任何类都是一样的:只需包含声明它们的标题并正常使用它们(及其成员函数)。

This link描述了如何使用MingGW编写示例库。