2023-01-20 323
我想从Java(Android)代码调用本机C ++方法,并将Java函数作为参数传递,因此我将能够将功能指针保存在C ++代码中,并从本机代码中激活它.
我选择使用匿名类在Java中实现功能指针,然后我将Java的本机函数称为以下:
interface FunctionPtrHelper {
bool function(String param);
}
NativeFunc(param1,param2,new FunctionPtrHelper() {
public bool myFunction(String param) {
//body of my function
}});
我如何使swig/jni知道3rd param(实际上是类)并将其转换为c ++中的函数指针(将包含” myfunction”)?
如果不可能,是否有另一种方法可以将功能指针从Java传递到C ++?
您可以编写C ++接口并将其作为”导演”类.然后,您可以在Java中实现接口.实例化Java中的实现对象,然后将其传递到C ++方法中,该方法将指针或引用对接口进行引用,并且C ++将能够回到您的Java类中.例如:
// SWIGed C++
class IStringToBool
{
public:
virtual bool call(std::string s) = 0;
}
class IStringToBoolUser
{
public:
void setFunction(IStringToBool &function);
}
,然后:
// Java
public class MyFunction implements IStringToBool {
public bool call(String s) {
// do something
return true;
}
}
文档:使用导演的跨语言多态性
使用JNI,您可以将对象传递给C ++,然后您可以从C ++对象中取指针.
以上所述是小编给大家介绍的如何将Java功能指针传递到C ++本机代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25997.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态