国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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



本文主要分享在軟通動力揚帆系列“競”OpenHarmony開發板上測試Native C++應用開發,實現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++代碼區									
│   ├── types:                                          // 接口存放文件夾
│   │   └── libentry							
│   │       ├── index.d.ts                              // 接口文件
│   │       └── package.json                            // 接口注冊配置文件
│   ├── CmakeList.txt                                   // Cmake打包配置文件
│   └── hello.cpp                                       // C++源代碼
└── ets                                                 // ets代碼區
    └── Application
    │   └── AbilityStage.ts                             // Hap包運行時類
    ├── MainAbility
    │   └── MainAbility.ts                              // Ability,提供對Ability生命周期、上下文環境等調用管理
    └── 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

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

    關注

    22

    文章

    2123

    瀏覽量

    77110
  • 軟通動力
    +關注

    關注

    1

    文章

    1202

    瀏覽量

    16486
  • 鴻湖萬聯
    +關注

    關注

    1

    文章

    93

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    動力攜手通教育斬獲GIIC聯盟鴻蒙生態推委會七項榮譽

    1月28日,全球智慧物聯網聯盟(GIIC)鴻蒙生態推委會委員大會暨2025生態伙伴年會在深圳圓滿召開,動力攜子公司
    的頭像 發表于 01-30 11:10 ?292次閱讀

    動力旗下亮相2025鴻蒙生態人才大會

    核心共建企業,動力旗下受邀參會,通過深度參與大會發布活動、主題演講及成果展示,全方位
    的頭像 發表于 12-31 09:50 ?382次閱讀
    <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>亮相2025鴻蒙生態人才大會

    動力旗下榮膺開源鴻蒙共建貢獻TOP單位

    11月28日,以“在一起,就可以”為主題的鴻蒙星光盛典生態論壇于深圳召開。在這場開源生態的年度盛會上,動力及子公司
    的頭像 發表于 12-01 14:31 ?508次閱讀

    動力子公司亮相2025高交會

    11月14日,第二十七屆中國國際高新技術成果交易會(簡稱“高交會”)在深圳國際會展中心盛大啟幕。在這場匯聚全球頂尖創新力量的國家級科技盛會上,動力子公司
    的頭像 發表于 11-19 17:22 ?760次閱讀

    動力攜手亮相2025開源鴻蒙技術大會

    徑。作為OpenHarmony項目群A類捐贈人,由動力高級副總裁、
    的頭像 發表于 10-09 09:28 ?894次閱讀

    開放原子開源基金會蒞臨動力參觀交流

    近日,開放原子開源基金會理事長兼秘書長程曉明率隊蒞臨動力總部,與動力董事長兼首席執行官劉天文等公司高層就開源生態協同與行業落地實踐展開深入交流?;饡貢L助理李博,
    的頭像 發表于 10-09 09:16 ?638次閱讀

    RK3506開發板QT Creator開發手冊,交叉編譯工具鏈與QT應用示例,入門必備

    本文基于觸覺智能RK3506核心/開發板介紹QTCreator交叉編譯配置與QT應用示例。如需購買開發板進行評估驗證簡介QTCreatorQtCreator?是由TheQtCompa
    的頭像 發表于 09-30 16:26 ?3682次閱讀
    RK3506<b class='flag-5'>開發板</b>QT Creator<b class='flag-5'>開發</b>手冊,交叉編譯工具鏈與QT應用<b class='flag-5'>示例</b>,入門必備

    【作品合集】潤開HH-SCDAYU800A開發板測評

    防護,包含豐富的異構計算和高速IO資源。 活動詳情地址:【OH專題】潤開HH-SCDAYU800A開發板免費試用 作者:傘振凱【潤開HH-SCDAYU800A
    發表于 09-19 14:09

    動力攜手亮相2025開放原子開源生態大會

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

    動力HDC 2025精彩回顧

    此前,6月20-22日,華為開發者大會2025(HDC 2025)在東莞松山隆重舉行。動力作為大會鉆石(最高級)合作伙伴,攜旗下子公司
    的頭像 發表于 07-01 09:10 ?1244次閱讀

    動力攜手亮相華為開發者大會2025

    近日,華為開發者大會 2025在東莞松山盛大舉行,動力攜子公司
    的頭像 發表于 06-26 14:15 ?1100次閱讀

    基于RK處理器,創龍TL3562-MiniEVM開發板試用體驗

    數量: 10塊 ? 更多熱點文章閱讀 基于平頭哥TH1520芯片,潤開HH-SCDAYU800A開發板免費試用 RISC-V開發板深度評測!頂級
    的頭像 發表于 06-05 16:31 ?1175次閱讀
    基于RK處理器,創龍TL3562-MiniEVM<b class='flag-5'>開發板</b><b class='flag-5'>試用</b>體驗

    性能強悍!合眾HZ-RK3568開發板試用體驗

    月19日 ? 評測數量: 10塊 ? 更多熱點文章閱讀 基于平頭哥TH1520芯片,潤開HH-SCDAYU800A開發板免費試用 RISC-V開發板深度評測!頂級
    的頭像 發表于 06-05 16:30 ?1466次閱讀
    性能強悍!合眾HZ-RK3568<b class='flag-5'>開發板</b><b class='flag-5'>試用</b>體驗

    動力攜手亮相華為中國合作伙伴大會2025

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

    動力攜手亮相2025武漢鴻蒙產業發展交流會

    近日,以“鴻蒙生態 共筑未來”為主題的2025武漢鴻蒙產業發展交流會在武漢圓滿舉行。本次活動聚焦產業政策發布及鴻蒙生態與區域產業的深度融合,吸引了政產學研用等多方力量參會。作為鴻蒙生態核心共建單位,動力及其子公司
    的頭像 發表于 03-20 15:51 ?1101次閱讀