鸿蒙c的调用demo,传送字符串等类型

写一传输字符串的demo,返回也是字符串

1.检查对应的sdk是否都安装好了,我用的是sdk9

2.新创建一个Native  c++项目,目录结构

cke_3226.png

3.鸿蒙是调用c的流程

cke_5605.png

案列简易Native C++ 示例(ArkTS) (huawei.com)

4.写一传输字符串的demo,返回也是字符串

去index.ets里面导入import testNapi from 'libentry.so',添加按钮

Button("点击")

          .onClick(() => {

            let outputcode = testNapi.getCode("stringdemo");

            console.info("测试:"+outputcode)

          })

然后去index.d.添加

export const getCode: (a: any) => any;

注意oh-package.json5文件里面对应的路径和名字不要写错

5.最后调用代码。去你的hello.cpp

static napi_module demoModule = {

    .nm_version =1,

    .nm_flags = 0,

    .nm_filename = nullptr,

    .nm_register_func = Init, //人口方法

    .nm_modname = "entry",//模块名

    .nm_priv = ((void*)0),

    .reserved = { 0 },

};

extern "C" __attribute__((constructor)) void RegisterEntryModule(void)

{

    napi_module_register(&demoModule);

}

EXTERN_C_START

static napi_value Init(napi_env env, napi_value exports)

{

    napi_property_descriptor desc[] = {

//getCode是对应的index.d.ts的方法名。GetCode是你要在.cpp里面实现的方法名

        { "getCode", nullptr, GetCode, nullptr, nullptr, nullptr, napi_default, nullptr }

    };

    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);

    return exports;

}

EXTERN_C_END

 

static napi_value GetCode(napi_env env, napi_callback_info info) {

    //输入参数个数

    size_t argc = 1;

    //输入参数数组

    napi_value args[1] = {nullptr};

    //将获取的传入参数放入数组中

    if (napi_ok != napi_get_cb_info(env, info, &argc, args, nullptr, nullptr)) {

        return nullptr;

    }

//上面的你就能把输入的字符串放入args[0]中了,下面就是写对应的调用逻辑

//记录长度

    size_t typeLen = 0;

    //char类型的转换

    char *str = nullptr;

    //写入缓存,获得args[0]对应的char长度

    napi_get_value_string_utf8(env, args[0], nullptr, 0, &typeLen);

    //napi_get_value_string_utf8(env,数组对象,char,缓存长度,获取的长度)主要作用是通过缓存复制的方法,将对象转换为char,复制到缓存中,获取长度

    str = new char[typeLen + 1];

   //获取输入的字符串转换为char类型的str

    napi_get_value_string_utf8(env, args[0], str, typeLen + 1, &typeLen);

//然后你就可以写对应的加密之类的操作了,这个自己写,我跳过了

 

//创建输出对象

    napi_value output;

    //将char类型的str,赋值给output,类型为string

    napi_create_string_utf8(env, str, typeLen , &output);

    //返回的是长度

    //napi_create_double(env, typeLen, &output);

 return output;

//    return args[0];//这个是直接返回输入对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值