用C++为java构建一个dll,它正在调用另一个dll(Eclipse上的JNI)

Build a dll in C++ for java which is calling another dll (JNI on Eclipse)

本文关键字:dll 上的 JNI 调用 另一个 Eclipse 一个 java C++ 构建      更新时间:2023-10-16

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

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

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

我该怎么做?

提前谢谢!

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

例如,假设您的dll是由源文件my_dll.cpp生成的my_dll.dll,并使用一个名为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中定义的任何类的使用也是如此:只需包含声明它们的头,并正常使用它们(及其成员函数)。

此链接描述如何使用MingGW编写示例库。