java - 如何为单个 C 函数生成多个包装器?

标签 java c swig

我有一个像这样的 C 函数。

void useData(char* buf) {
   // TODO.....
}

通过 swig 我成功地生成了这个。

public static void useData(SWIGTYPE_p_char buf) {
    // SWIG stuff....
}

现在这有效了,但有时我想传递 ByteBuffer 而不是 SWIGTYPE_p_char。 通过另一个类型映射,我成功地生成了这个。

public static void useData(ByteBuffer buf) {
    // SWIG stuff....
}

这可行,但我的新类型映射会覆盖旧类型映射,并且我无法再使用 SWIGTYPE_p_char 调用该函数。

我的目标是生成 useData 函数的两个入口点,一个采用 ByteBuffer,另一个采用 SWIGTYPE_p_char

我已经用谷歌搜索并阅读文档好几天了,但我找不到任何东西。

这是我可以使用 SWIG 实现的吗?或者我缺少什么?我非常感谢指针、特定文档或替代搜索词。

编辑: 使用 ByteBuffer 类型映射,SWIG 仅生成 ByteBuffer,但不生成 SWIGTYPE_p_char。我正在尝试让它同时生成两者。

最佳答案

您可以保留这两个生成的函数。从 java 方面来说这是完全有效的。

关于java - 如何为单个 C 函数生成多个包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59805024/

相关文章:

java - JProfiler 不断抛出连接错误,检测到不同版本的 JProfiler

c - FOTA : How can i do firmware update over the air?

c - 字符串的哈希函数

java - System.loadLibrary 不再作为 Java 包的一部分工作

java - 共享库中本地方法调用的 Jython UnsatisfiedLinkError

java - 为什么我的字段是空的,即使它应该立即实例化?

java - 如何在回收站 View 中隐藏广告 View

java - 如何在 Android 中使用一个接口(interface)与多个类

c - 如何使用参数 (void (*store) (int*,int)) 调用此函数?

c++ - Swig、Python、C++ : TypeError: in method 'Geodatabase_Open' , 类型 'std::string' 的参数 2