<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      不生成DOM的非主流Blazor UI開源啦!

      ??作者之前介紹了開發中的PixUI,為了適配Web應用采用了將C#通過Roslyn語法語義分析后轉換為Javascript的方案,但是這樣帶來的問題是工程量較大,在短時間內無法達到生產級質量。因此在簡單評估了Blazor技術后決定暫使用Blazor WebAssembly來實現PixUI的Web端。本文記錄一些Blazor鏈接原生(C/C++)庫過程中所踩過的坑,同時為了慶祝兒子考完10年內最難中考提前宣布PixUI正式開放源碼,基本概念介紹請參考上一篇。

      PixUI源碼: https://github.com/enjoycode/PixUI

      在目錄下執行一下git submodule update --init --recursive

      請先安裝 dotnet workload install wasm-tools

      打開PixUI.sln運行PixUI.Platform.Blazor項目

      坑一: 原生函數返回結構體無法編譯鏈接的問題

      ??示例C結構體與函數定義如下:

      typedef struct {
        uint32_t x;
        uint32_t y;
      } CPoint;
      
      CPoint get_point(); //返回結構體
      

      此時C#封裝的Api調用上述函數在Blazor WebAssembly鏈接時會報錯,需要包裝原生函數如下:

      void get_point_wasm(CPoint* cpoint);
      

      對應的C# Api代碼為:

      public struct CPoint {
          public uint x;
          public uint y;
      }
      
      [LibraryImport("nativeLibName")]
      public static partial unsafe void get_point_wasm(CPoint* cpoint);
      

      坑二: 原生函數回調C#方法的問題

      ??C#的回調方法必須是靜態方法,同時標上UnmanagedCallersOnly特性,且參數不能有結構體(可以用結構體指針代替),示例如下:

      [UnmanagedCallersOnly]
      public static unsafe void Callback(CPoint* cpoint) { /*...*/ }
      

      ??在將C#回調方法封送給原生函數時參考如下示例,注意因Blazor WebAssembly的Bug,回調地址只能是IntPtr類型:

      var callbackPtr = (IntPtr)(delegate* unmanaged<void, CPoint*>)&Callback;
      c_api(callbackPtr); //將回調地址封送給原生函數
      

      坑三: Unicode庫ICU4C的問題

      ??因Blazor WebAssembly生成的icudt.dat文件不包含skia庫需要的一些Feature(比如:分詞、換行等),所以需要參考https://github.com/dotnet/icu.git自己定義并重新生成該數據文件,并且配置Blazor項目替換相應的數據文件。

      小結

      ??最后預告一下使用PixUI開發中的低代碼快速開發框架AppBox,通過內置的開發環境將傳統應用開發過程中的數據結構、業務邏輯、用戶界面等抽象為模型,組合模型形成完整的應用。

      ??力量有限,歡迎感興趣的小伙伴加入共同完善!

      posted @ 2023-06-19 10:15  白菜園  閱讀(2957)  評論(29)    收藏  舉報
      主站蜘蛛池模板: 久久精品国产亚洲综合av| 久久一日本道色综合久久| 亚洲高潮喷水无码AV电影| 无码人妻丝袜在线视频| 国产成人永久免费av在线| yy111111少妇无码影院| 久热这里只有精品12| 青青草原网站在线观看| 黑巨人与欧美精品一区| 蜜桃无码一区二区三区| 无码日韩做暖暖大全免费不卡| 在线精品自拍亚洲第一区| 色偷偷女人的天堂亚洲网| 精品国产一区二区在线视| av日韩精品在线播放| 亚洲av成人一区二区三区| 91中文字幕一区在线| 亚洲国产精品一区二区第一页| 亚洲综合视频一区二区三区| 高清无码18| 无码国产精品一区二区av| 日韩三级一区二区在线看| 精品久久人人妻人人做精品 | 久久亚洲精品中文字幕馆| 欧美三级欧美成人高清| 国产无遮挡又黄又爽免费网站 | 精品国产中文字幕第一页| 成人免费无码大片A毛片抽搐色欲| 久久五月丁香合缴情网| 日日碰狠狠添天天爽五月婷| 精品国产美女福到在线不卡 | 日本亚洲一区二区精品| 成人精品网一区二区三区| 国产午夜精品福利久久| 伊人欧美在线| 国产成人一区二区三区免费 | 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 国产午夜成人久久无码一区二区| 漂亮的保姆hd完整版免费韩国| 精品久久久久中文字幕日本 | 久久99精品久久久久久9|