我有这样的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中不存在。
[您可以做的是将void指针用作函数的参数,并使用第二个参数(例如:枚举)来告诉您所使用的参数类型。这里解释得很好:https://www.geeksforgeeks.org/does-c-support-function-overloading/