重载 JNI 方法
Overload JNI Method
我有一个带有两个参数的现有 JNI 方法。已经有一段时间了,在使用中,所以我不想只是改变它,以免愤怒的顾客的愤怒被释放出来。
但是,我现在需要做一个调整。
所以,我想,用额外的参数创建第二个重载方法并弃用双参数版本。那部分很顺利,jar 构建和运行没有问题。
问题出在 C++ 方面...我定义了两个方法,一个是另一个的包装器(两个参数调用三个参数版本),但是,当我导出这两个方法时,我收到:
Error 1 error C2733: second C linkage of overloaded function 'Java_com_xxx' not allowed
那么,我该怎么做才能保留旧方法名称并添加具有新参数的新方法?这可行吗?
运行 javah
在您的 Java 文件中声明本机方法,您会发现您需要两个不同的 Java_com_xxx
函数。 C 级声明必须是唯一的。
我有一个带有两个参数的现有 JNI 方法。已经有一段时间了,在使用中,所以我不想只是改变它,以免愤怒的顾客的愤怒被释放出来。
但是,我现在需要做一个调整。
所以,我想,用额外的参数创建第二个重载方法并弃用双参数版本。那部分很顺利,jar 构建和运行没有问题。
问题出在 C++ 方面...我定义了两个方法,一个是另一个的包装器(两个参数调用三个参数版本),但是,当我导出这两个方法时,我收到:
Error 1 error C2733: second C linkage of overloaded function 'Java_com_xxx' not allowed
那么,我该怎么做才能保留旧方法名称并添加具有新参数的新方法?这可行吗?
运行 javah
在您的 Java 文件中声明本机方法,您会发现您需要两个不同的 Java_com_xxx
函数。 C 级声明必须是唯一的。