chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【軟通動(dòng)力鴻湖萬聯(lián)揚(yáng)帆系列“競”開發(fā)板試用體驗(yàn)】Native C++應(yīng)用Demo示例(eTS)

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-13 10:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文來源電子發(fā)燒友社區(qū),作者:soon順soon, 帖子地址:https://bbs.elecfans.com/jishu_2308771_1_1.html



本文主要分享在軟通動(dòng)力揚(yáng)帆系列“競”OpenHarmony開發(fā)板上測試Native C++應(yīng)用開發(fā),實(shí)現(xiàn)eTS調(diào)用Native C++ 程序?qū)崿F(xiàn)對(duì)給定的兩個(gè)數(shù)進(jìn)行加減乘除運(yùn)算示例(eTS)

1.新建OpenHarmony Native C++工程

選擇File->New->Create Project -> OpenHarmony -> Native C++點(diǎn)擊Next
CreateProject.png

輸入Project name,選擇SDK版本9

CreateProject2.png

點(diǎn)擊Finish,如果Native SDK 沒有下載則會(huì)出現(xiàn)以下界面,點(diǎn)擊Configure Now

CreateProject3.png

下載Native SDK
SDK.png

Native SDK下載完成后點(diǎn)擊Finish 進(jìn)入工程
SDK_Finish.png

2.源碼修改

2.1 工程主要文件說明

工程初始化后目錄結(jié)構(gòu)如下圖,主要文件為紅色框內(nèi)文件

project_file.png

主要文件文件說明如下:

├── cpp:C++代碼區(qū)									
│   ├── types:                                          // 接口存放文件夾
│   │   └── libentry							
│   │       ├── index.d.ts                              // 接口文件
│   │       └── package.json                            // 接口注冊(cè)配置文件
│   ├── CmakeList.txt                                   // Cmake打包配置文件
│   └── hello.cpp                                       // C++源代碼
└── ets                                                 // ets代碼區(qū)
    └── Application
    │   └── AbilityStage.ts                             // Hap包運(yùn)行時(shí)類
    ├── MainAbility
    │   └── MainAbility.ts                              // Ability,提供對(duì)Ability生命周期、上下文環(huán)境等調(diào)用管理
    └── pages
        └── index.ets                                   // 主頁面

2.2 cpp源碼編寫

自帶的案例已經(jīng)實(shí)現(xiàn)了加法運(yùn)算的接口,本案例在此基礎(chǔ)上加入減法乘法除法,entrysrcmaincpphello.cpp主要修改如下

參考“Add”方法,實(shí)現(xiàn)Sub、Mul、Div

static napi_value Sub(napi_env env, napi_callback_info info)
{
    size_t requireArgc = 2;
    size_t argc = 2;
    napi_value args[2] = {nullptr};

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

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

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

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

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

    napi_value sum;
    napi_create_double(env, value0 - value1, &sum);

    return sum;

}
static napi_value Mul(napi_env env, napi_callback_info info)
{
    size_t requireArgc = 2;
    size_t argc = 2;
    napi_value args[2] = {nullptr};

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

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

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

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

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

    napi_value sum;
    napi_create_double(env, value0*value1, &sum);

    return sum;

}
static napi_value Div(napi_env env, napi_callback_info info)
{
    size_t requireArgc = 2;
    size_t argc = 2;
    napi_value args[2] = {nullptr};

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

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

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

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

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

    napi_value sum;
    napi_create_double(env, value0/value1, &sum);

    return sum;

}

Init中注冊(cè)對(duì)外接口名為“sub”、“mul”、“div”

EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports)
{
    napi_property_descriptor desc[] = {
        { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr },
        { "sub", nullptr, Sub , nullptr, nullptr, nullptr, napi_default, nullptr },
        { "mul", nullptr, Mul , nullptr, nullptr, nullptr, napi_default, nullptr },
        { "div", nullptr, Div , nullptr, nullptr, nullptr, napi_default, nullptr },
    };
    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
    return exports;
}
EXTERN_C_END

2.3 index.d.ts接口文檔編寫

src/main/cpp/types/libentry/index.d.ts
添加以下接口

export const sub: (a: number, b: number) => number;
export const mul: (a: number, b: number) => number;
export const div: (a: number, b: number) => number;

2.4 界面實(shí)現(xiàn)

src/main/ets/pages/index.ets
中通過import testNapi from 'libentry.so'引入SO包,當(dāng)點(diǎn)擊按鈕時(shí)調(diào)用對(duì)應(yīng)的方法

import testNapi from 'libentry.so'

@Entry
@Component
struct Index {
  private textInputController1: TextInputController = new TextInputController()
  private textInputController2: TextInputController = new TextInputController()
  private tittle: string = '調(diào)用C標(biāo)準(zhǔn)庫示例'
  private message: string = '對(duì)給定的兩個(gè)數(shù)進(jìn)行加減乘除運(yùn)算'
  private tipsNum1: string = '請(qǐng)輸入第一個(gè)數(shù):'
  private tipsNum2: string = '請(qǐng)輸入第二個(gè)數(shù):'
  private tipsResult: string = '結(jié)果:'
  private buttonAdd: string = '加'
  private buttonSub: string = '減'
  private buttonMul: string = '乘'
  private buttonDiv: string = '除'
  @State result: number = 0
  @State num1: number = 0.0
  @State num2: number = 0.0

  build() {
    Row() {
      Column() {
        Row(){
          Text(this.tittle).height('100%').align(Alignment.Center).fontSize(40).fontWeight(800)
        }.height('10%').width('100%').justifyContent(FlexAlign.Center)
        Row(){
          Text(this.message).height('100%').align(Alignment.Center).fontSize(24).fontWeight(500)
        }.height('15%').width('100%').justifyContent(FlexAlign.Center)
        Row(){
          Text(this.tipsNum1).fontColor(Color.Black).fontSize(24).width('30%').height('100%').margin({left:30})
          TextInput({ placeholder: '請(qǐng)輸入第一個(gè)數(shù)字:', controller:this.textInputController1}).type(InputType.Number)
            .height('100%').width('60%').margin({left:10,right:30})
            .onChange(value =>{this.num1 = parseFloat(value)})
        }.height('5%').width('100%').justifyContent(FlexAlign.Start)
        Row(){
          Text(this.tipsNum2).fontColor(Color.Black).fontSize(24).width('30%').height('100%').margin({left:30})
          TextInput({ placeholder: '請(qǐng)輸入第二個(gè)數(shù)字:', controller:this.textInputController2}).type(InputType.Number)
            .height('100%').width('60%').margin({left:10,right:30})
            .onChange(value =>{this.num2 = parseFloat(value)})
        }.height('5%').width('100%').margin({top:20})
        Row(){
          Text(this.tipsResult).fontColor(Color.Black).fontSize(24).width('40%').height('100%').margin({left:30})
          Text(''+this.result).fontColor(Color.Black).fontSize(30).width(60).height(200).width('60%').height('100%')
        }.height('10%').width('100%').touchable(false)
        Row(){
          Button(this.buttonAdd)
            .fontSize(40)
            .fontWeight(FontWeight.Bold)
            .margin({top:5})
            .height(100)
            .width(100)
            .onClick(() => {
              this.result = testNapi.add(this.num1,this.num2)
            })
          Button(this.buttonSub)
            .fontSize(40)
            .fontWeight(FontWeight.Bold)
            .margin({top:5})
            .height(100)
            .width(100)
            .onClick(() => {
              this.result = testNapi.sub(this.num1,this.num2)
            })
          Button(this.buttonMul)
            .fontSize(40)
            .fontWeight(FontWeight.Bold)
            .margin({top:5})
            .height(100)
            .width(100)
            .onClick(() => {
              this.result = testNapi.mul(this.num1,this.num2)
            })
          Button(this.buttonDiv)
            .fontSize(40)
            .fontWeight(FontWeight.Bold)
            .margin({top:5})
            .height(100)
            .width(100)
            .onClick(() => {
              this.result = testNapi.div(this.num1,this.num2)
            })
        }.height('30%').width('100%').justifyContent(FlexAlign.Center)
      }
      .width('100%')
    }
    .height('100%')
  }
}

3 運(yùn)行效果演示

簽名后運(yùn)行效果如下

加法

加法.jpg

減法

減法.jpg

乘法
乘法.jpg

除法

除法.jpg

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2120

    瀏覽量

    76453
  • 軟通動(dòng)力
    +關(guān)注

    關(guān)注

    1

    文章

    1090

    瀏覽量

    16143
  • 鴻湖萬聯(lián)
    +關(guān)注

    關(guān)注

    1

    文章

    86

    瀏覽量

    989
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    動(dòng)力攜手聯(lián)亮相2025開源鴻蒙技術(shù)大會(huì)

    徑。聯(lián)作為OpenHarmony項(xiàng)目群A類捐贈(zèng)人,由動(dòng)力高級(jí)副總裁、
    的頭像 發(fā)表于 10-09 09:28 ?357次閱讀

    動(dòng)力攜手聯(lián)亮相2025開放原子開源生態(tài)大會(huì)

    7月23日至24日,以“開源共融,智創(chuàng)未來”為主題的2025開放原子開源生態(tài)大會(huì)在北京隆重召開。作為開源生態(tài)的核心共建者,動(dòng)力攜子公司
    的頭像 發(fā)表于 07-25 14:43 ?666次閱讀

    動(dòng)力攜手聯(lián)亮相華為開發(fā)者大會(huì)2025

    近日,華為開發(fā)者大會(huì) 2025在東莞松山盛大舉行,動(dòng)力攜子公司
    的頭像 發(fā)表于 06-26 14:15 ?628次閱讀

    動(dòng)力攜手聯(lián)亮相華為中國合作伙伴大會(huì)2025

    此前,3月20日至21日,華為中國合作伙伴大會(huì)2025在深圳盛大舉行。作為鉆石級(jí)贊助商,動(dòng)力攜子公司
    的頭像 發(fā)表于 03-24 15:53 ?979次閱讀

    動(dòng)力攜手聯(lián)亮相2025武漢鴻蒙產(chǎn)業(yè)發(fā)展交流會(huì)

    近日,以“鴻蒙生態(tài) 共筑未來”為主題的2025武漢鴻蒙產(chǎn)業(yè)發(fā)展交流會(huì)在武漢圓滿舉行。本次活動(dòng)聚焦產(chǎn)業(yè)政策發(fā)布及鴻蒙生態(tài)與區(qū)域產(chǎn)業(yè)的深度融合,吸引了政產(chǎn)學(xué)研用等多方力量參會(huì)。作為鴻蒙生態(tài)核心共建單位,動(dòng)力及其子公司
    的頭像 發(fā)表于 03-20 15:51 ?763次閱讀

    動(dòng)力聯(lián)蒞臨開放原子開源基金會(huì)參觀交流

    為進(jìn)一步增進(jìn)互信,深化開源生態(tài)協(xié)同建設(shè),2月11日,動(dòng)力董事、聯(lián)董事長黃穎率團(tuán)隊(duì)赴開放
    的頭像 發(fā)表于 02-13 17:29 ?962次閱讀

    微展世與聯(lián)攜手發(fā)布WeOS開源鴻蒙工業(yè)操作系統(tǒng)

    近日,微展世(北京)數(shù)字科技有限公司(簡稱“微展世”)在北京隆重舉辦了2025年度的產(chǎn)品發(fā)布與戰(zhàn)略簽約盛會(huì)。此次盛會(huì)中,微展世的重要戰(zhàn)略合作伙伴——動(dòng)力及其子公司
    的頭像 發(fā)表于 01-23 15:48 ?1029次閱讀

    動(dòng)力聯(lián)與微展世簽署戰(zhàn)略合作協(xié)議,以開源鴻蒙賦能工業(yè)創(chuàng)新升級(jí)

    1月7日,動(dòng)力攜子公司聯(lián),與微展世(北京)數(shù)字科技有限公司(簡稱“微展世”)在廣州簽署
    的頭像 發(fā)表于 01-21 16:30 ?872次閱讀
    <b class='flag-5'>軟</b>通<b class='flag-5'>動(dòng)力</b>攜<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯(lián)</b>與微展世簽署戰(zhàn)略合作協(xié)議,以開源鴻蒙賦能工業(yè)創(chuàng)新升級(jí)

    ?動(dòng)力子公司聯(lián)攜手南方科技大學(xué) 共筑開源鴻蒙人才培養(yǎng)新高地

    1月4日,動(dòng)力子公司聯(lián)與南方科技大學(xué)攜手,開展了一
    的頭像 發(fā)表于 01-20 17:02 ?1126次閱讀
    ?<b class='flag-5'>軟</b>通<b class='flag-5'>動(dòng)力</b>子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯(lián)</b>攜手南方科技大學(xué) 共筑開源鴻蒙人才培養(yǎng)新高地

    榮膺多項(xiàng)殊榮!動(dòng)力攜子公司聯(lián)亮相2024開放原子開發(fā)者大會(huì)

    壯大我國開源生態(tài)。作為開源生態(tài)的杰出貢獻(xiàn)者和深度參與者,動(dòng)力攜子公司聯(lián)深度參與大會(huì)各項(xiàng)
    的頭像 發(fā)表于 01-20 09:42 ?1354次閱讀
    榮膺多項(xiàng)殊榮!<b class='flag-5'>軟</b>通<b class='flag-5'>動(dòng)力</b>攜子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯(lián)</b>亮相2024開放原子<b class='flag-5'>開發(fā)</b>者大會(huì)

    動(dòng)力聯(lián)與微展世簽署戰(zhàn)略合作協(xié)議

    近日,動(dòng)力攜子公司聯(lián),與微展世(北京)數(shù)字科技有限公司(簡稱“微展世”)在廣州簽署戰(zhàn)略
    的頭像 發(fā)表于 01-10 10:16 ?688次閱讀

    聯(lián)攜手南方科技大學(xué)推動(dòng)開源鴻蒙生態(tài)發(fā)展

    近日,動(dòng)力子公司聯(lián)與南方科技大學(xué)攜手,開展了一系列
    的頭像 發(fā)表于 01-06 14:01 ?832次閱讀

    聯(lián)亮相OpenHarmony人才生態(tài)大會(huì)2024

    近日,由開放原子開源基金會(huì)指導(dǎo),OpenHarmony項(xiàng)目群工作委員會(huì)主辦的OpenHarmony人才生態(tài)大會(huì)2024在武漢隆重舉辦。動(dòng)力子公司
    的頭像 發(fā)表于 11-30 10:41 ?827次閱讀

    動(dòng)力攜子公司聯(lián)、通教育助陣首屆鴻蒙生態(tài)大會(huì)成功舉辦

    11月23日·中國深圳,首屆鴻蒙生態(tài)大會(huì)上,動(dòng)力動(dòng)力子公司
    的頭像 發(fā)表于 11-29 10:25 ?925次閱讀
    <b class='flag-5'>軟</b>通<b class='flag-5'>動(dòng)力</b>攜子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯(lián)</b>、<b class='flag-5'>軟</b>通教育助陣首屆鴻蒙生態(tài)大會(huì)成功舉辦

    動(dòng)力及子公司聯(lián)當(dāng)選GIIC聯(lián)盟理事單位

    操作系統(tǒng)研發(fā)和產(chǎn)業(yè)化服務(wù)的較早參與者、鴻蒙生態(tài)建設(shè)的先鋒企業(yè),動(dòng)力及其子公司聯(lián)雙雙被授
    的頭像 發(fā)表于 11-24 11:43 ?859次閱讀