99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

詳解機(jī)器視覺(jué)軟件開(kāi)發(fā)SDK

新機(jī)器視覺(jué) ? 來(lái)源:新機(jī)器視覺(jué) ? 2023-03-27 14:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

其實(shí)很簡(jiǎn)單,SDK 就是 Software Development Kit 的縮寫(xiě),中文意思就是“軟件開(kāi)發(fā)工具包”。

這是一個(gè)覆蓋面相當(dāng)廣泛的名詞,可以這么說(shuō):輔助開(kāi)發(fā)某一類(lèi)軟件的相關(guān)文檔、范例和工具的集合都可以叫做“SDK”。具體到我們這個(gè)系列教程,我們后面只討論廣義 SDK 的一個(gè)子集——即開(kāi)發(fā) Windows 平臺(tái)下的應(yīng)用程序所使用的 SDK。

呵呵,其實(shí)上面只是說(shuō)了一個(gè) SDK 大概的概念而已,理解什么是 SDK 真有這么容易嗎?

恐怕沒(méi)這么簡(jiǎn)單!為了解釋什么是 SDK 我們不得不引入 API、動(dòng)態(tài)鏈接庫(kù)、導(dǎo)入庫(kù)等等概念。^_^,不要怕,也就是幾個(gè)新的名詞而已,其實(shí)學(xué)習(xí)新知識(shí)就是在學(xué)習(xí)新名詞、新概念和新術(shù)語(yǔ)。

首先要接觸的是“API”,也就是 Application Programming Interface,其實(shí)就是操作系統(tǒng)留給應(yīng)用程序的一個(gè)調(diào)用接口,應(yīng)用程序通過(guò)調(diào)用操作系統(tǒng)的 API 而使操作系統(tǒng)去執(zhí)行應(yīng)用程序的命令(動(dòng)作)。其實(shí)早在 DOS 時(shí)代就有 API 的概念,只不過(guò)那個(gè)時(shí)候的 API 是以中斷調(diào)用的形式(INT 21h)提供的,在 DOS 下跑的應(yīng)用程序都直接或間接的通過(guò)中斷調(diào)用來(lái)使用操作系統(tǒng)功能,比如將 AH 置為 30h 后調(diào)用 INT 21h 就可以得到 DOS 操作系統(tǒng)的版本號(hào)。而在 Windows 中,系統(tǒng) API 是以函數(shù)調(diào)用的方式提供的。同樣是取得操作系統(tǒng)的版本號(hào),在 Windows 中你所要做的就是調(diào)用 GetVersionEx() 函數(shù)??梢赃@么說(shuō),DOS API 是“Thinking in 匯編語(yǔ)言”的,而 Windows API 則是“Thinking in 高級(jí)語(yǔ)言”的。DOS API 是系統(tǒng)程序的一部分,他們與系統(tǒng)一同被載入內(nèi)存并且可以通過(guò)中斷矢量表找到他們的入口,那么 Windows API 呢?要說(shuō)明白這個(gè)問(wèn)題就不得不引入我們下面要介紹得這個(gè)概念——DLL。

DLL(又是一個(gè)縮寫(xiě),感覺(jué) IT 這個(gè)行業(yè)里三字頭縮寫(xiě)特別多),即 Dynamic Link Library(動(dòng)態(tài)鏈接庫(kù))。我們經(jīng)常會(huì)看到一些 .dll 格式的文件,這些文件就是動(dòng)態(tài)鏈接庫(kù)文件,其實(shí)也是一種可執(zhí)行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接執(zhí)行,他們通常由 .exe 在執(zhí)行時(shí)裝入,內(nèi)含有一些資源以及可執(zhí)行代碼等。其實(shí) Windows 的三大模塊就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API 函數(shù)的執(zhí)行代碼。為了使用 DLL 中的 API 函數(shù),我們必須要有 API 函數(shù)的聲明(.H)和其導(dǎo)入庫(kù)(.LIB),函數(shù)的原型聲明不難理解,那么導(dǎo)入庫(kù)又是做什么用的呢?我們暫時(shí)先這樣理解:導(dǎo)入庫(kù)是為了在 DLL 中找到 API 的入口點(diǎn)而使用的。

所以,為了使用 API 函數(shù),我們就要有跟 API 所對(duì)應(yīng)的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開(kāi)發(fā) Windows 應(yīng)用程序所需的相關(guān)文件、范例和工具的“工具包”。到此為止,我們才真正的解釋清楚了 SDK 的含義。

由于 SDK 包含了使用 API 的必需資料,所以人們也常把僅使用 API 來(lái)編寫(xiě) Windows 應(yīng)用程序的開(kāi)發(fā)方式叫做“SDK 編程”。而 API 和 SDK 是開(kāi)發(fā) Windows 應(yīng)用程序所必需的東西,所以其它編程框架和類(lèi)庫(kù)都是建立在它們之上的,比如 VCL 和 MFC,雖然他們比起“SDK 編程”來(lái)有著更高的抽象度,但這絲毫不妨礙它們?cè)谛枰臅r(shí)候隨時(shí)直接調(diào)用 API 函數(shù)。

開(kāi)發(fā)SDK時(shí)需要注意的問(wèn)題

1.修改類(lèi)別文件名及類(lèi)別方法。

開(kāi)發(fā)SDK時(shí)通常會(huì)用到比較多的第三方的類(lèi)別方法, 這樣的話, 開(kāi)發(fā)者在使用你的SDK時(shí), 因?yàn)樗赡芤矔?huì)加一些第三方的開(kāi)源庫(kù), 比如都使用了NSString的md5類(lèi)別文件。 由于這兩個(gè)文件都是從網(wǎng)上下載來(lái)下的, 所以文件名是一樣的。 這樣在編譯時(shí)就會(huì)報(bào)錯(cuò)。 然后就想到要去修改這個(gè)類(lèi)別文件名, 等修改類(lèi)別文件名后。 發(fā)現(xiàn)類(lèi)別中的方法名是一樣的, 而iOS在調(diào)用兩個(gè)相同方法的類(lèi)別方法時(shí), 不能確定其調(diào)用的哪個(gè)方法, 但可以肯定地是只會(huì)調(diào)用一個(gè)類(lèi)別方法, 如果恰好開(kāi)發(fā)者自己又修改了這個(gè)類(lèi)別方法, 那就有問(wèn)題了。

所以在SDK開(kāi)發(fā)過(guò)程中, 需要修改引入進(jìn)來(lái)的類(lèi)名, 及方法名, 建議添加項(xiàng)目前綴, 最好是三個(gè)字母的, 如NAB, (兩個(gè)字母為蘋(píng)果自己保留使用)

2.在開(kāi)發(fā)SDK時(shí), 如果發(fā)現(xiàn)某個(gè)方法命名時(shí)比較困難, 那么幾乎可以肯定的是, 這個(gè)方法藕合度太高,需要再次進(jìn)行分解。

3.開(kāi)發(fā)SDK時(shí), 需要考慮到升級(jí)的問(wèn)題, 并且可以指定某些版本必須強(qiáng)制升級(jí)。 (以防某些版本到后期發(fā)現(xiàn)有明顯問(wèn)題, 需要及時(shí)替換)

4.開(kāi)發(fā)SDK時(shí), 需要留出一個(gè)接口, 能通過(guò)后臺(tái)服務(wù)器強(qiáng)制關(guān)閉掉某個(gè)接入應(yīng)用的調(diào)用。 (這可能會(huì)發(fā)生在惡意地攻擊行為, 以及非惡意地使用行為,如某應(yīng)用頻繁自動(dòng)重啟事故,每次重啟都會(huì)調(diào)用咱們的SDK,然后就會(huì)使得咱們的SDK服務(wù)器壓力陡增), 這個(gè)時(shí)候, 如果后臺(tái)能根據(jù)這個(gè)應(yīng)用的APP ID啥的, 強(qiáng)制關(guān)閉它發(fā)的請(qǐng)求,或者屏掉他的請(qǐng)求, 你會(huì)發(fā)現(xiàn)世界如此美好。

5.統(tǒng)計(jì)方面, SDK存儲(chǔ)每個(gè)接口調(diào)用的次數(shù),以在一定的情況下發(fā)送給服務(wù)器, 便于后期分析某些接口是否有問(wèn)題,或者是根本就沒(méi)有用戶(hù)使用的情況。

6.有些SDK使用的前提條件,最好是在編譯期就提示給用戶(hù),而不是在運(yùn)行期, 可以使用類(lèi)似下面代碼來(lái)進(jìn)行提示

#warning - Release scheme, this is not work.

#if !__has_feature(objc_arc)

#error iBeaconSDK requires automatic reference counting

#endif

更好地構(gòu)建SDK

1. 了解墻外的世界,把握好需求

試著去關(guān)注你的競(jìng)爭(zhēng)對(duì)手或者與你相似領(lǐng)域的公司都做了什么。這可能會(huì)給你一些參考的角度。采納你喜歡的地方,改善你不喜歡的地方。

2. 簡(jiǎn)潔

代碼簡(jiǎn)潔——簡(jiǎn)潔的代碼意味著你的客戶(hù)用起來(lái)得心應(yīng)手。這可能包括盡可能減少與代碼交互的方式,比如只公開(kāi)一個(gè)接口類(lèi);或是簡(jiǎn)短的方法簽名,比如少量的輸入?yún)?shù),等等。

除了初始化階段(只發(fā)生一次且可能要求進(jìn)行配置),請(qǐng)讓SDK方法使用起來(lái)盡可能簡(jiǎn)單。

同樣地,請(qǐng)盡量減少方法簽名中的參數(shù)。

你可以通過(guò)提供默認(rèn)配置以及允許高級(jí)用戶(hù)進(jìn)行覆蓋的默認(rèn)實(shí)現(xiàn)類(lèi)來(lái)達(dá)到這一目的。

隱藏用戶(hù)不需要使用的類(lèi)和方法,比如,只將用戶(hù)必須使用的類(lèi)/方法設(shè)定為公有的,否則就將它們的使用范圍設(shè)定為局部或者私有。一個(gè) IDEs 提供了代碼檢查與清除功能,可以幫你自動(dòng)實(shí)現(xiàn)這一點(diǎn)。

參考文檔簡(jiǎn)潔——讓你的文檔盡可能簡(jiǎn)單易懂。這意味著有時(shí)候你得多寫(xiě)注釋?zhuān)袝r(shí)候又得盡量少寫(xiě)。內(nèi)聯(lián)樣本代碼通常很有幫助,因?yàn)榇蠖鄶?shù)人都是通過(guò)例子來(lái)學(xué)習(xí)的。

3. 提供簡(jiǎn)單的開(kāi)始步驟

這是指一個(gè)人可以在五分鐘內(nèi)上手使用你的代碼。這一點(diǎn)非常重要,因?yàn)榭蛻?hù)往往希望盡可能不費(fèi)力地進(jìn)行集成。除此之外,有時(shí)候客戶(hù)想要評(píng)估你的產(chǎn)品,但如果無(wú)法進(jìn)行簡(jiǎn)單的測(cè)試,他們就很可能選擇跳過(guò)你的產(chǎn)品。

4. 短小精悍

保持簡(jiǎn)短主要是文檔的責(zé)任,但是同樣與用戶(hù)和SDK代碼的交互方式有關(guān);為了保持文檔的簡(jiǎn)短,可以提供代碼樣例、一目了然的方法名或使用默認(rèn)數(shù)據(jù)來(lái)實(shí)現(xiàn)。

5. 集成

請(qǐng)謹(jǐn)記客戶(hù)開(kāi)發(fā)環(huán)境的多樣性。

比如說(shuō),如果你在寫(xiě)一個(gè)安卓庫(kù),它的集成方式在客戶(hù)使用AndroidStudio加gradle 框架和使用Eclipse集成開(kāi)發(fā)環(huán)境時(shí)就非常不同。前者需要aar工件并發(fā)布到遠(yuǎn)程存儲(chǔ)庫(kù)中,而后者需要你提供jar文件,以及關(guān)于如何為SDK更改AndroidManifext.xml文件和獨(dú)立eclipse項(xiàng)目的指導(dǎo)。

這可能會(huì)影響你的構(gòu)建機(jī)制及其工件。然而,不要試圖取悅所有客戶(hù),請(qǐng)先滿(mǎn)足你的第一位客戶(hù),或者預(yù)期中的大多數(shù)客戶(hù)的需求。

6. 項(xiàng)目示例

在GitHub上創(chuàng)建一個(gè)最基本的項(xiàng)目,模擬使用SDK包的用戶(hù)。

這可以向客戶(hù)展示你的產(chǎn)品如何滿(mǎn)足他們的需求,以及如何集成你的產(chǎn)品。如果你想展示高級(jí)用法,那就在另一個(gè)項(xiàng)目里進(jìn)行展示。通常,客戶(hù)會(huì)將項(xiàng)目示例作為主要的參考文檔,因此,請(qǐng)?zhí)峁┬袃?nèi)評(píng)論,并盡量用一目了然的方式書(shū)寫(xiě)代碼。

7. 概述

在參考文檔的開(kāi)頭,或是GitHub項(xiàng)目的README.md文件中,請(qǐng)用直白的語(yǔ)言對(duì)你的解決方案進(jìn)行概述。在此部分,筆者通常會(huì)提供一個(gè)使用樣例來(lái)解釋SDK的典型用法。如果有可能,請(qǐng)?zhí)峁┮粋€(gè)簡(jiǎn)單的表格或是圖表,這樣一來(lái),不喜歡閱讀操作指南的用戶(hù)也可以快速了解該SDK的優(yōu)勢(shì)。

8. 初始化

使用在SDK域內(nèi)可接受的慣例。

這些慣例可能是可重載的構(gòu)造函數(shù),某種構(gòu)建模式等。初始化應(yīng)當(dāng)巧妙地使用默認(rèn)值來(lái)簡(jiǎn)化流程。

9. 默認(rèn)值

默認(rèn)值對(duì)于保持代碼的簡(jiǎn)潔性和減少配置過(guò)程(見(jiàn)簡(jiǎn)潔性部分)是非常重要的。你所提供的默認(rèn)值(不管是在配置還是實(shí)施過(guò)程)應(yīng)該代表在你眼中大多數(shù)SDK用戶(hù)會(huì)進(jìn)行的操作。

審核編輯 :李倩

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

    關(guān)注

    0

    文章

    646

    瀏覽量

    28693
  • 機(jī)器視覺(jué)
    +關(guān)注

    關(guān)注

    163

    文章

    4598

    瀏覽量

    122942
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1077

    瀏覽量

    49152

原文標(biāo)題:詳解,機(jī)器視覺(jué)軟件開(kāi)發(fā)SDK

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    知識(shí)分享 | 敏捷方法在基于模型的軟件開(kāi)發(fā)項(xiàng)目中的應(yīng)用

    傳統(tǒng)的瀑布式軟件開(kāi)發(fā)流程存在諸多局限,這使得應(yīng)用敏捷原則變得尤為重要,尤其是面對(duì)復(fù)雜且不斷變化的開(kāi)發(fā)環(huán)境時(shí)。作為最高效的軟件開(kāi)發(fā)方法之一,基于模型的開(kāi)發(fā)(MBD)具有諸多優(yōu)勢(shì)。將敏捷原
    的頭像 發(fā)表于 07-16 16:52 ?488次閱讀
    知識(shí)分享 | 敏捷方法在基于模型的<b class='flag-5'>軟件開(kāi)發(fā)</b>項(xiàng)目中的應(yīng)用

    主流機(jī)器視覺(jué)軟件開(kāi)發(fā)平臺(tái)介紹及對(duì)比?

    機(jī)器視覺(jué)作為工業(yè)自動(dòng)化的核心技術(shù),其軟件開(kāi)發(fā)平臺(tái)的選擇直接影響項(xiàng)目的開(kāi)發(fā)效率、成本及最終性能。本文將對(duì)比當(dāng)前主流的視覺(jué)
    的頭像 發(fā)表于 07-14 09:44 ?140次閱讀
    主流<b class='flag-5'>機(jī)器</b><b class='flag-5'>視覺(jué)</b><b class='flag-5'>軟件開(kāi)發(fā)</b>平臺(tái)介紹及對(duì)比?

    芯科科技Unify軟件開(kāi)發(fā)套件更新

    Silicon Labs(芯科科技)最新發(fā)布的Unify 軟件開(kāi)發(fā)套件 (SDK) 更新內(nèi)容引入了一系列功能,旨在大幅增強(qiáng)對(duì)Z-Wave開(kāi)發(fā)的支持,包括優(yōu)化的安全性以及協(xié)議功能。該版本標(biāo)志著一個(gè)轉(zhuǎn)變
    的頭像 發(fā)表于 04-23 10:03 ?431次閱讀

    最新Simplicity SDK軟件開(kāi)發(fā)工具包發(fā)布

    最新的SimplicitySDK軟件開(kāi)發(fā)工具包已經(jīng)發(fā)布!此次更新針對(duì)SiliconLabs(芯科科技)第二代無(wú)線開(kāi)發(fā)平臺(tái)帶來(lái)了包括藍(lán)牙6.0的信道探測(cè)(Channel Sounding
    的頭像 發(fā)表于 12-24 09:47 ?901次閱讀

    我國(guó)軟件開(kāi)發(fā)者數(shù)量超過(guò)940萬(wàn)

    在近日舉辦的開(kāi)放原子開(kāi)發(fā)者大會(huì)上,工業(yè)和信息化部負(fù)責(zé)人傳來(lái)了一則令人振奮的消息:我國(guó)軟件開(kāi)發(fā)者數(shù)量已經(jīng)突破940萬(wàn)大關(guān)。這一數(shù)據(jù)不僅彰顯了我國(guó)在軟件開(kāi)發(fā)領(lǐng)域的雄厚實(shí)力,也預(yù)示著我國(guó)在全球軟件開(kāi)
    的頭像 發(fā)表于 12-23 11:08 ?625次閱讀

    BQ7690x軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ7690x軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:19 ?1次下載
    BQ7690x<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    用戶(hù)手冊(cè) | 全志T113-S3開(kāi)發(fā)板——SDK編譯指南

    前言:軟件開(kāi)發(fā)套件(SDK)是為軟件工程師在特定的平臺(tái)上進(jìn)行應(yīng)用程序開(kāi)發(fā)而提供的一系列軟件開(kāi)發(fā)工具的集合。給
    的頭像 發(fā)表于 11-01 08:08 ?5132次閱讀
    用戶(hù)手冊(cè) | 全志T113-S3<b class='flag-5'>開(kāi)發(fā)</b>板——<b class='flag-5'>SDK</b>編譯指南

    TMS320C6201 DSP軟件開(kāi)發(fā)技術(shù)

    電子發(fā)燒友網(wǎng)站提供《TMS320C6201 DSP軟件開(kāi)發(fā)技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 09:25 ?0次下載
    TMS320C6201 DSP<b class='flag-5'>軟件開(kāi)發(fā)</b>技術(shù)

    PGA460軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《PGA460軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-09 10:30 ?7次下載
    PGA460<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    PGA450-Q1軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《PGA450-Q1軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-30 14:25 ?1次下載
    PGA450-Q1<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    ECU電控軟件開(kāi)發(fā)及測(cè)試介紹

    本文重點(diǎn)介紹符合AutoSar架構(gòu)的應(yīng)用軟件開(kāi)發(fā)、MBD開(kāi)發(fā)模式下的軟件質(zhì)量評(píng)估與優(yōu)化方案、復(fù)雜場(chǎng)景下的ECU性能壓力測(cè)試方案。
    的頭像 發(fā)表于 09-26 14:25 ?4058次閱讀
    ECU電控<b class='flag-5'>軟件開(kāi)發(fā)</b>及測(cè)試介紹

    TUSS44x0軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《TUSS44x0軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:59 ?0次下載
    TUSS44x0<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    BQ769x2軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ769x2軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-26 09:12 ?1次下載
    BQ769x2<b class='flag-5'>軟件開(kāi)發(fā)</b>指南

    BQ769x2 軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ769x2 軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-12 14:41 ?0次下載

    嵌入式軟件開(kāi)發(fā)與AI整合

    嵌入式軟件開(kāi)發(fā)與AI整合是當(dāng)前技術(shù)發(fā)展的重要趨勢(shì)之一。隨著人工智能技術(shù)的快速發(fā)展,嵌入式系統(tǒng)越來(lái)越多地集成了AI算法,以實(shí)現(xiàn)更復(fù)雜的智能功能。以下是關(guān)于嵌入式軟件開(kāi)發(fā)與AI整合的詳細(xì)分析
    的頭像 發(fā)表于 07-31 09:25 ?1379次閱讀
    嵌入式<b class='flag-5'>軟件開(kāi)發(fā)</b>與AI整合