91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

【Z站推薦】用 AWTK 編寫跨平臺(tái)的代碼

ZLG致遠(yuǎn)電子 ? 2022-09-09 14:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AWTK 是 ZLG 開源的跨平臺(tái) GUI 引擎,本文介紹一下基于 AWTK 開發(fā)應(yīng)用程序需要遵循的規(guī)范和方法,以保證應(yīng)用程序也能跨平臺(tái)運(yùn)行。93ae978a-2eec-11ed-9ade-dac502259ad0.jpg ?盡量使用tkc中的函數(shù)tkc 中提供了編碼、時(shí)間、網(wǎng)絡(luò)、串口、線程、互斥和文件系統(tǒng)等各種需要跨平臺(tái)接口的封裝,這些接口在各個(gè)平臺(tái)都有實(shí)現(xiàn)。
93ae978a-2eec-11ed-9ade-dac502259ad0.jpg ?針對接口編程

如果需要的某個(gè)功能,在各個(gè)平臺(tái)都有不同的實(shí)現(xiàn),先研究各個(gè)平臺(tái)提供的功能,再抽象一個(gè)統(tǒng)一的接口,針對各個(gè)平臺(tái)實(shí)現(xiàn)一個(gè)適配器。應(yīng)用程序使用統(tǒng)一的接口去訪問這些功能,應(yīng)用程序不但能夠跨平臺(tái)運(yùn)行,代碼也更具可讀性。


93ae978a-2eec-11ed-9ade-dac502259ad0.jpg ?指定特定平臺(tái)的庫、頭文件、預(yù)處理參數(shù)和鏈接參數(shù)helper 提供了一組函數(shù)來處理不同平臺(tái)的參數(shù)。平臺(tái)名稱的取值有:

“Windows” Windows 平臺(tái);

Linux” Linux 平臺(tái);

“Darwin” MacOS 平臺(tái);

* AndroidIOS 不使用 scons 編譯,故不使用這種方式。

添加平臺(tái)特有的庫;

示例:

helper.add_platform_libs("Windows",["ws2_32"])

helper.add_platform_libs("Linux",["pthread","dl","readline","m"])

helper.add_platform_libs("Darwin",["pthread","dl","readline","m"])

添加平臺(tái)特有的庫的搜索路徑;

add_platform_libpath(self,platform_name,APP_LIBPATH)

示例:

helper.add_platform_libpath("Linux",["/usr/local/lib"])

* 注意這里的 APP_LIBPATH 是數(shù)組類型。

添加平臺(tái)特有的頭文件的搜索路徑;

add_platform_cpppath(self, platform_name, APP_CPPPATH)

示例:

helper.add_platform_libpath("Linux", ["/usr/local/include"])

* 注意這里的 APP_CPPPATH 是數(shù)組類型。

添加平臺(tái)特有的宏定義預(yù)處理參數(shù);

add_platform_ccflags(self, platform_name, APP_CCFLAGS)

示例:

helper.add_platform_ccflags("Linux", " -DSOME_MACRO=1 ")

* ccflags 是字符串格式不是數(shù)組。

添加平臺(tái)特有的C++文件的預(yù)處理參數(shù);

add_platform_cxxflags(self, platform_name, APP_CXXFLAGS)

示例:

helper.add_platform_cxxflags("Linux", " -DSOME_MACRO=1 ")

* cxxflags 是字符串格式不是數(shù)組。

添加平臺(tái)特有的鏈接參數(shù);

add_platform_linkflags(self,platform_name,APP_LINKFLAGS)

* linkflags 是字符串格式不是數(shù)組。

93c1d94e-2eec-11ed-9ade-dac502259ad0.jpg 區(qū)分各個(gè)平臺(tái)的宏

  • WIN32 或 WINDOWS Windows 平臺(tái);
  • MINGW Windows 平臺(tái)的 MinGW 編譯;
  • LINUX Linux 平臺(tái);
  • MACOS 或__APPLE__ Macos 平臺(tái);
  • ANDROID Android 平臺(tái);
  • IOS iOS 平臺(tái)。

* 這些宏雖然可以區(qū)分不同的平臺(tái),但是如果將這些宏分散在應(yīng)用程序中,代碼將會(huì)變得丑陋難讀。建議先定義接口,在適配器中使用這些宏。示例:

#ifdefANDROID
#include"SDL.h"
#endif/*ANDROID*/

#ifdefined(__APPLE__)||defined(LINUX)
#include
#include
#include
#include
#elifdefined(WIN32)
#include
#include
#include
#include
#include
#include
#defineunlink_unlink
#definerenameMoveFileA
#defineftruncate_chsize
#include"./dirent.inc"
#include"tkc/utf8.h"
#include"tkc/mem.h"
#endif

#ifdefined(__APPLE__)
#include
#endif/*__APPLE__*/

93c1d94e-2eec-11ed-9ade-dac502259ad0.jpg 添加平臺(tái)特有的文件有些文件是特定平臺(tái)才需要的,可以根據(jù)平臺(tái)的名稱,來決定添加哪些文件。示例:

importplatform;

OS_NAME=platform.system()
ifOS_NAME=='Windows':
sources=Glob('src/windows/*.c')
elifOS_NAME=='Linux':

sources=Glob('src/linux/*.c')

【版權(quán)聲明】本文為ZLG開發(fā)者社區(qū)用戶原創(chuàng)內(nèi)容,未經(jīng)授權(quán)不得轉(zhuǎn)載。歡迎更多用戶到社區(qū)交流互動(dòng)、創(chuàng)作博文,一經(jīng)采用,可獲得百元京東E卡。

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

    關(guān)注

    30

    文章

    4968

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    開源鴻蒙技術(shù)大會(huì)2025丨平臺(tái)開發(fā)框架分論壇:共拓移動(dòng)開發(fā)新邊界,共創(chuàng)平臺(tái)生態(tài)新時(shí)代

    隨著開源鴻蒙生態(tài)的持續(xù)壯大,開發(fā)者迎來了除Android與iOS之外的“第三種選擇”。為解決“加入一個(gè)新生態(tài)就會(huì)增加一倍投入”的行業(yè)痛點(diǎn),讓開發(fā)者的代碼能夠在更多平臺(tái)上復(fù)用,開源鴻蒙平臺(tái)
    的頭像 發(fā)表于 11-20 17:31 ?988次閱讀
    開源鴻蒙技術(shù)大會(huì)2025丨<b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b>開發(fā)框架分論壇:共拓移動(dòng)開發(fā)新邊界,共創(chuàng)<b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b>生態(tài)新時(shí)代

    HbirdV2平臺(tái)移植教程

    期間問題種種,較為心酸。 總結(jié)如上平臺(tái)代碼,推薦各參賽隊(duì)由于軟硬件聯(lián)調(diào)的不便性,建議使用兩塊板卡分別調(diào)試,故平臺(tái)移植軟核就顯得尤為重要。由于賽題限定使用Xilinx
    發(fā)表于 10-31 07:04

    代碼開發(fā)平臺(tái)推薦:2025國內(nèi)低代碼開發(fā)平臺(tái)排名TOP10

    代碼開發(fā)平臺(tái)排行榜 在企業(yè)數(shù)字化轉(zhuǎn)型的浪潮中,低代碼開發(fā)平臺(tái)正逐漸成為企業(yè)實(shí)現(xiàn)高效開發(fā)和快速迭代的重要工具。隨著技術(shù)的不斷進(jìn)步和市場需求的持續(xù)增長,低
    的頭像 發(fā)表于 10-28 10:22 ?753次閱讀

    2025主流低代碼平臺(tái)有哪些:低代碼開發(fā)平臺(tái)選型指南指南

    在企業(yè)數(shù)字化轉(zhuǎn)型進(jìn)入深水區(qū)的當(dāng)下,低代碼開發(fā)平臺(tái)已從早期的“效率工具”升級為“核心基建”。其工程化能力、流程適配深度、技術(shù)延展性與行業(yè)積淀,直接決定了企業(yè)轉(zhuǎn)型的成效。據(jù)Gartner預(yù)測,到2026
    的頭像 發(fā)表于 10-22 11:49 ?410次閱讀

    物聯(lián)網(wǎng)平臺(tái)設(shè)備關(guān)聯(lián)+拖拽式搭建

    提到物聯(lián)網(wǎng),很多人會(huì)想到“傳感器采集數(shù)據(jù)、設(shè)備遠(yuǎn)程控制”,但很少有人知道:讓分散的傳感器“說話互通”、讓不懂編程的人也能搭建物聯(lián)網(wǎng)應(yīng)用,背后都離不開“物聯(lián)網(wǎng)平臺(tái)”。物聯(lián)網(wǎng)項(xiàng)目的“中樞大腦”,通過
    的頭像 發(fā)表于 08-29 15:35 ?741次閱讀

    嵌入式工程師為什么要學(xué)QT?

    、Clang、MSVC等,并提供了平臺(tái)的編譯和發(fā)布流程。 強(qiáng)大的集成開發(fā)環(huán)境(IDE) Qt Creator提供了代碼編輯、調(diào)試、構(gòu)建和發(fā)布功能,極大地提升了開發(fā)效率。 因此,Qt是嵌入式工程師值得學(xué)習(xí)的一個(gè)工具。 它能夠
    發(fā)表于 08-14 15:15

    什么是零代碼平臺(tái)?

    代碼平臺(tái)是一種無需編寫傳統(tǒng)代碼,通過可視化拖拽、參數(shù)配置、邏輯連線即可快速搭建業(yè)務(wù)流程與應(yīng)用系統(tǒng)的工具平臺(tái)。它將復(fù)雜的軟件開發(fā)過程轉(zhuǎn)化為
    發(fā)表于 07-12 20:28

    ArkUI-X平臺(tái)橋接Bridge說明

    介紹如何通過平臺(tái)橋接編寫自定義的Android、iOS平臺(tái)代碼。ArkUI側(cè)具體用法請參考Bridge API,Android側(cè)參考BridgePlugin,iOS側(cè)參考BridgeP
    發(fā)表于 06-19 23:12

    ArkUI-X平臺(tái)技術(shù)落地-華為運(yùn)動(dòng)健康(二)

    代碼依賴了鴻蒙Next系統(tǒng)的原生能力,我們將該原生能力包稱為A包;與此同時(shí),我們開發(fā)平臺(tái)場景包,為了描述方便,我們將這個(gè)包命名為B包,B包的接口形式與數(shù)據(jù)結(jié)構(gòu)跟A包保持一致,但是B包的內(nèi)部實(shí)現(xiàn)與A包
    發(fā)表于 06-18 23:04

    ArkUI-X平臺(tái)技術(shù)落地-華為運(yùn)動(dòng)健康(一)

    NEXT系統(tǒng)上運(yùn)動(dòng)健康的架構(gòu)設(shè)計(jì)如下: 1.新建獨(dú)立平臺(tái)的Entry模塊,該平臺(tái)Entry模塊用于編譯
    發(fā)表于 06-18 22:53

    ArkUI-X平臺(tái)應(yīng)用改造指南

    ArkUI-X平臺(tái)應(yīng)用改造指南 現(xiàn)狀與訴求 隨著 HarmonyOS Next 5.0 版本正式發(fā)布,眾多開發(fā)者基于 ArkTS 語言為 HarmonyOS Next 系統(tǒng)開發(fā)了大量應(yīng)用,這極大
    發(fā)表于 06-16 23:05

    ArkUI-X平臺(tái)差異化

    平臺(tái)使用場景是一套ArkTS代碼運(yùn)行在多個(gè)終端設(shè)備上,如Android、iOS、OpenHarmony(含基于OpenHarmony發(fā)行的商業(yè)版,如HarmonyOS Next)。當(dāng)不同平臺(tái)
    發(fā)表于 06-10 23:08

    ArkUI-x平臺(tái)Bridge最佳實(shí)踐

    代碼中?到了不?持平臺(tái)的API,此時(shí)?想平臺(tái)可以利?此機(jī)制將不?持
    發(fā)表于 06-10 23:06

    ArkUI-X平臺(tái)框架接入指南

    ArkUI平臺(tái)框架(ArkUI-X)進(jìn)一步將ArkUI開發(fā)框架擴(kuò)展到了多個(gè)OS平臺(tái):目前支持OpenHarmony、Android、 iOS,后續(xù)會(huì)逐步增加更多平臺(tái)支持。開發(fā)者基于一
    發(fā)表于 05-18 18:21

    AWTK,開啟屬于你的GUI之美

    在當(dāng)今數(shù)字化時(shí)代,軟件界面設(shè)計(jì)的高效性和一致性至關(guān)重要。本文將探討GUI設(shè)計(jì)從傳統(tǒng)代碼編寫到所見即所得工具的演變,并介紹AWTK如何通過一致的渲染技術(shù),為開發(fā)者帶來高效且直觀的開發(fā)體驗(yàn)。傳統(tǒng)GUI
    的頭像 發(fā)表于 05-13 11:31 ?1264次閱讀
    <b class='flag-5'>AWTK</b>,開啟屬于你的GUI之美