我实际上正在开发一个在Eclipse上使用JNI的项目。
实际上,我在C ++部分构建了一个dll,我在Java部分使用它。
但是,现在我需要在C ++部分调用一个dll(因为我需要使用现有项目)并使用C ++部分中的函数,然后构建dll以在Java中使用它。所以我需要创建一个调用另一个dll的dll。
我该怎么做?
提前谢谢!
答案 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编写示例库。