【问题标题】:Build a dll in C++ for java which is calling another dll (JNI on Eclipse) [closed]在 C++ 中为调用另一个 dll(Eclipse 上的 JNI)的 java 构建一个 dll [关闭]
【发布时间】:2016-09-25 11:25:08
【问题描述】:

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

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

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

我该怎么做?

提前谢谢你!

【问题讨论】:

  • 你使用的是哪个 c++ 编译器?

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


【解决方案1】:

要构建 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 中定义的任何类的用法也是如此:只需包含声明它们的标头并照常使用它们(及其成员函数)。

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

【讨论】:

  • 我会尽快试试这个。谢谢你的回答
  • 我试过这个,当我在 Java 部分使用该函数时出现错误。这是一个“找不到依赖库”错误。我该如何解决这个问题?
  • 好的,我尝试将我所有的 .dll 文件放在 [JRE]\bin 中,并且成功了。再次感谢您的帮助!
猜你喜欢
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多