java 包前缀为 swig

标签 java swig

我正在使用 SWIG 在 java 中生成代码。生成的类之一属于包 (my.block.myint)。生成的方法之一如下所示:

public static boolean intersect(Box2D box1, Box2D box2) { ... }

此方法需要一个名为 Box2D 的类,该类位于另一个包 (my.core)

我希望生成的函数看起来像这样:

public static boolean intersect(my.core.Box2D box1, my.core.Box2D box2) { ... }

目前我在 .i 文件中使用此编译指示:

%typemap(javaimports) Box2D "my.core.Box2D";

它复制包my.block.myint中的Box2D.java文件,但这不是一个令人满意的方法。感谢您的想法!

最佳答案

如果这些类来自另一个 SWIG 模块的 %import 指令,您可以使用 %typemap("javapackage") ,例如

%typemap("javapackage") Box2D, Box2D *, Box2D & "my.core.Box2D";

如果这些类是当前模块的一部分,并且您希望将当前模块放入特定包中,则可以使用 -package 来执行此操作当您调用 SWIG 时,例如:

swig -c++ -Wall -java -package my.core.Box2D -outdir my/core/Box2D box2d.i

最后,如果您想让 Java 代理类上的方法采用 Java 类型,而不是 SWIG 已经知道的类型,您可以这样做:

%typemap(jstype) Box2D "my.core.Box2D"

但请注意,您需要提供额外的类型映射来向 SWIG 解释如何从 my.core.Box2D 类型转换为它生成的 JNI 接口(interface)所需的类型。这可以使用 javain 类型映射,也可以使用 jtype 类型映射和相应的 jni 类型映射。

关于java 包前缀为 swig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243853/

相关文章:

java - 高效文本处理Java

c++ - 如何在 Visual Studio 2010 中使用 SWIG 创建 DLL

android - Android OpenCV 端口有什么缺点吗?

java - 无法正确地将 std::pair 暴露给 java 绑定(bind)?

c++ - 如何用swig实例化模板类的模板方法?

c# - 对不同语言/体系结构/操作系统中相对较小的数字取对数

java - Spring Data MongoDB 存储库查询串联如何工作?

java - 使用 LuaJava 时如何处理 Lua 代码执行?

java - 为什么 nextLine() 返回一个空字符串?

Java/C++ SWIG - 使用数组参数调用函数