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

问题描述 投票:1回答:2

我有这样的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 c swig
2个回答
0
投票

您可以只保留两个生成的函数。从Java方面来看,这是完全有效的。


0
投票

据我了解,您正在尝试执行函数重载,但是此功能在C中不存在。

[您可以做的是将void指针用作函数的参数,并使用第二个参数(例如:枚举)来告诉您所使用的参数类型。这里解释得很好:https://www.geeksforgeeks.org/does-c-support-function-overloading/

© www.soinside.com 2019 - 2024. All rights reserved.