色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-10-13 10:19 ? 次閱讀

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



本文主要分享在軟通動力揚帆系列“競”OpenHarmony開發(fā)板上測試Native C++應用開發(fā),實現eTS調用Native C++ 程序實現對給定的兩個數進行加減乘除運算示例(eTS)

1.新建OpenHarmony Native C++工程

選擇File->New->Create Project -> OpenHarmony -> Native C++點擊Next
CreateProject.png

輸入Project name,選擇SDK版本9

CreateProject2.png

點擊Finish,如果Native SDK 沒有下載則會出現以下界面,點擊Configure Now

CreateProject3.png

下載Native SDK
SDK.png

Native SDK下載完成后點擊Finish 進入工程
SDK_Finish.png

2.源碼修改

2.1 工程主要文件說明

工程初始化后目錄結構如下圖,主要文件為紅色框內文件

project_file.png

主要文件文件說明如下:

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

2.2 cpp源碼編寫

自帶的案例已經實現了加法運算的接口,本案例在此基礎上加入減法乘法除法,entrysrcmaincpphello.cpp主要修改如下

參考“Add”方法,實現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中注冊對外接口名為“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 界面實現

src/main/ets/pages/index.ets
中通過import testNapi from 'libentry.so'引入SO包,當點擊按鈕時調用對應的方法

import testNapi from 'libentry.so'

@Entry
@Component
struct Index {
  private textInputController1: TextInputController = new TextInputController()
  private textInputController2: TextInputController = new TextInputController()
  private tittle: string = '調用C標準庫示例'
  private message: string = '對給定的兩個數進行加減乘除運算'
  private tipsNum1: string = '請輸入第一個數:'
  private tipsNum2: string = '請輸入第二個數:'
  private tipsResult: string = '結果:'
  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: '請輸入第一個數字:', 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: '請輸入第二個數字:', 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 運行效果演示

簽名后運行效果如下

加法

加法.jpg

減法

減法.jpg

乘法
乘法.jpg

除法

除法.jpg

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • C++
    C++
    +關注

    關注

    22

    文章

    2108

    瀏覽量

    73623
  • 軟通動力
    +關注

    關注

    1

    文章

    787

    瀏覽量

    15143
  • 鴻湖萬聯
    +關注

    關注

    1

    文章

    67

    瀏覽量

    634
收藏 人收藏

    評論

    相關推薦

    亮相OpenHarmony人才生態(tài)大會2024

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

    動力攜子公司通教育助陣首屆鴻蒙生態(tài)大會成功舉辦

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

    雙雙入選!動力及子公司當選GIIC聯盟理事單位

    智能物聯網操作系統研發(fā)和產業(yè)化服務的較早參與者、鴻蒙生態(tài)建設的先鋒企業(yè),動力及其子公司
    的頭像 發(fā)表于 11-29 09:58 ?113次閱讀
    雙雙入選!<b class='flag-5'>軟</b>通<b class='flag-5'>動力</b>及子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯</b>當選GIIC聯盟理事單位

    動力及子公司當選GIIC聯盟理事單位

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

    動力子公司發(fā)布SwanLinkOS 5

    在近日圓滿閉幕的首屆H?I3 AI探索峰會上,動力憑借其深厚的技術實力與創(chuàng)新精神,在鴻蒙生態(tài)領域再次邁出堅實步伐。會上,動力攜手子公司
    的頭像 發(fā)表于 09-04 16:50 ?821次閱讀

    動力子公司重磅發(fā)布SwanLinkOS 5,擘畫開源鴻蒙AI PC新篇章

    在剛剛落下帷幕的首屆H?I3AI探索峰會上,動力再次于鴻蒙生態(tài)領域實現突破。此次活動中,動力高級副總裁、
    的頭像 發(fā)表于 09-03 11:37 ?545次閱讀
    <b class='flag-5'>軟</b>通<b class='flag-5'>動力</b>子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯</b>重磅發(fā)布SwanLinkOS 5,擘畫開源鴻蒙AI PC新篇章

    動力子公司榮獲礦OSV生態(tài)合作伙伴授牌

    圓滿舉行。此次授牌旨在表彰和認可礦生態(tài)圈內的優(yōu)秀合作伙伴,激發(fā)礦領域新動能。動力子公司
    的頭像 發(fā)表于 08-14 17:58 ?324次閱讀
    <b class='flag-5'>軟</b>通<b class='flag-5'>動力</b>子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯</b>榮獲礦<b class='flag-5'>鴻</b>OSV生態(tài)合作伙伴授牌

    動力旗下榮獲礦OSV生態(tài)合作伙伴授牌

    近日,鄂爾多斯臨港經濟區(qū)見證了礦OSV生態(tài)合作伙伴授牌儀式的隆重舉行。在這場匯聚行業(yè)精英的盛會中,動力旗下的
    的頭像 發(fā)表于 08-14 14:50 ?561次閱讀

    動力子公司攜多款重磅創(chuàng)新產品亮相華為開發(fā)者大會

    如何引領行業(yè)進步,共同探索鴻蒙生態(tài)與AI大模型的發(fā)展新契機。作為本次大會鉆石級合作伙伴,動力攜子公司
    的頭像 發(fā)表于 06-25 11:38 ?350次閱讀
    <b class='flag-5'>軟</b>通<b class='flag-5'>動力</b>子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯</b>攜多款重磅創(chuàng)新產品亮相華為<b class='flag-5'>開發(fā)</b>者大會

    動力子公司獲評首批華為礦OSV伙伴

    產業(yè)的新技術、新產品、新工藝、新成果,助力煤炭全產業(yè)鏈實現轉型突破,并打造一個專業(yè)化、國際化、市場化、高水平的煤炭及能源成果交流交易平臺,以促進煤炭及能源產業(yè)的合作與發(fā)展。動力子公司
    的頭像 發(fā)表于 05-18 09:42 ?455次閱讀
    <b class='flag-5'>軟</b>通<b class='flag-5'>動力</b>子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯</b>獲評首批華為礦<b class='flag-5'>鴻</b>OSV伙伴

    生態(tài)“加速跑” 動力子公司榮膺華為“礦生態(tài)使能合作伙伴”

    。在本次展會上,動力子公司受邀參與了華為礦
    的頭像 發(fā)表于 04-02 15:43 ?562次閱讀
    礦<b class='flag-5'>鴻</b>生態(tài)“加速跑” <b class='flag-5'>軟</b>通<b class='flag-5'>動力</b>子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯</b>榮膺華為“礦<b class='flag-5'>鴻</b>生態(tài)使能合作伙伴”

    共譜開源新篇章 動力子公司與鴻蒙生態(tài)服務公司簽署戰(zhàn)略合作協議

    近日,動力子公司與鴻蒙生態(tài)服務(深圳)有限公司(以下簡稱“鴻蒙生態(tài)服務公司”)成功簽
    的頭像 發(fā)表于 04-02 15:23 ?483次閱讀
    共譜開源新篇章 <b class='flag-5'>軟</b>通<b class='flag-5'>動力</b>子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯</b>與鴻蒙生態(tài)服務公司簽署戰(zhàn)略合作協議

    人才儲備再升級!動力子公司多名講師榮獲首批“鴻蒙原生應用開發(fā)培訓講師”認證

    近日,由鴻蒙生態(tài)服務公司組織開展的國內首批“鴻蒙原生應用開發(fā)培訓講師”認證順利完成。作為此次認證的重要參與者,申報的四位鴻蒙資深專家
    的頭像 發(fā)表于 03-25 10:25 ?615次閱讀
    人才儲備再升級!<b class='flag-5'>軟</b>通<b class='flag-5'>動力</b>子公司<b class='flag-5'>鴻</b><b class='flag-5'>湖</b><b class='flag-5'>萬</b><b class='flag-5'>聯</b>多名講師榮獲首批“鴻蒙原生應用<b class='flag-5'>開發(fā)</b>培訓講師”認證

    動力子公司多名講師榮獲首批“鴻蒙原生應用開發(fā)培訓講師”認證

    近日,由鴻蒙生態(tài)服務公司組織開展的國內首批“鴻蒙原生應用開發(fā)培訓講師”認證順利完成。作為此次認證的重要參與者,申報的四位鴻蒙資深專家
    的頭像 發(fā)表于 03-25 09:24 ?440次閱讀

    動力子公司戰(zhàn)略簽約鄂爾多斯工業(yè)互聯網平臺

    多方力量,旨在通過構建創(chuàng)新交流平臺,凝聚智慧力量,進一步鞏固鄂爾多斯市工業(yè)互聯網建設成果,充分發(fā)揮礦產業(yè)優(yōu)勢,加快工業(yè)互聯網基礎設施建設。動力子公司
    的頭像 發(fā)表于 01-22 13:57 ?535次閱讀
    主站蜘蛛池模板: 乱辈通奷XXXXXHD猛交| 色综合久久天天影视网| 亚洲 日韩 欧美 国产专区| 99久久免费国内精品| 国语大学生自产拍在线观看| 日本免费无码A专区在线观看| 在线天天看片视频免费观看| 国产九九熟女在线视频| 青柠视频在线观看高清HD| 最新国产精品福利2020| 国模孕妇模特季玥之粉红| 色精品极品国产在线视频| 99视频在线观看免费| 老师我好爽再深一点老师好涨| 亚洲国产中文字幕在线视频| 国产爱豆果冻传媒在线观看| 欧美ⅹxxxx18性欧美| 51精品少妇人妻AV一区二区 | 蜜芽TV影院在线视频| 亚洲欧美日韩另类精品一区二区三区| 大睾丸内射老师| 欧美最猛性xxxxx亚洲精品| 2021国产精品一卡2卡三卡4卡| 精品99久久久久成人网站| 小伙无套内射老女人| 国产成人自拍视频在线观看| 日本精品久久久久中文字幕| 99久久精品6在线播放| 蜜臀久久99精品久久久久久做爰| 在线自拍综合亚洲欧美| 久久高清一本无码| 亚洲午夜精品A片久久WWW软件| 国产自产视频在线观看香蕉| 为什么丈夫插我我却喜欢被打着插| 擦擦擦在线视频观看| 青青伊人国产| 成人国内精品久久久久影院| 全免费a级毛片免费看| xxxx18动漫| 让男人玩尿道的女人| 久久亚洲AV成人无码国产漫画|