OpenHarmony开发者论坛

标题: libusb库加载Native工程,怎么将libusb.h的接口给arkTS调用? [打印本页]

作者: a305566    时间: 2024-4-18 15:48
标题: libusb库加载Native工程,怎么将libusb.h的接口给arkTS调用?
[md]![1713426054652.png](https://forums-obs.openharmony.c ... 9vnd30ol4gchpdn.png "1713426054652.png")

如图所示,libusb库已经加载到Native工程并构建成功,Native工程中add接口,通过 index.d.ts 文件暴露给了arkTS调用,那libusb.h里面的接口,需要怎么处理,才能在arkTS里面调用?



index.d.ts 文件

```
export const add: (a: number, b: number) => number;
```

index.ets 文件里面调用add示例

```
.onClick(() => {
            hilog.info(0x0000, 'testTag', 'Test NAPI 100 + 68 = %{public}d', testNapi.add(100, 68));
          })
```

[/md]
作者: 深开鸿_王石    时间: 2024-4-22 09:30
这个需要写个napi接口,通过这个接口暴露给arkts层,样例可以参考https://forums.openharmony.cn/fo ... tid=2218&extra=;知识内容可以参考:https://docs.openharmony.cn/page ... use-napi-process.md
作者: a305566    时间: 2024-4-22 16:25
回复 深开鸿_王石: 每一个需要暴露的接口,都需要做下面的add函数类似的转换吗?

  1. static napi_value Add(napi_env env, napi_callback_info info)
  2. {
  3.     size_t requireArgc = 2;
  4.     size_t argc = 2;
  5.     napi_value args[2] = {nullptr};

  6.     napi_get_cb_info(env, info, &argc, args , nullptr, nullptr);

  7.     napi_valuetype valuetype0;
  8.     napi_typeof(env, args[0], &valuetype0);

  9.     napi_valuetype valuetype1;
  10.     napi_typeof(env, args[1], &valuetype1);

  11.     double value0;
  12.     napi_get_value_double(env, args[0], &value0);

  13.     double value1;
  14.     napi_get_value_double(env, args[1], &value1);

  15.     napi_value sum;
  16.     napi_create_double(env, value0 + value1, &sum);

  17.     return sum;

  18. }
复制代码

作者: 深开鸿_王石    时间: 2024-4-22 16:43
回复 a305566: 是的,所有js和c之间的接口都需要export接口以及定义dts内容




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5