八,查缺補漏

2021-10-22 08:34:22 字數 1845 閱讀 3776

// 宣告

public:

......

// 初始化sdk

static napi::value inithiksdk(const napi::callbackinfo &info);

// 登出sdk

static void cleanuphiksdk(const napi::callbackinfo &info);

......

};。。。。。。

// 實現

// 初始化sdk

else

}else

}// 登出sdk

else}}

這樣,我們在js裡,就可以跟平常寫c++**一樣,呼叫一些屬於這個類的靜態方法了

const addon = require('bindings')('nodecamera.node');

let isinit = false

const initsdk = () => catch (e)

}const cleansdk = () =>

}

另外,我在學習過程中,發現那些大神寫的binding.gyp檔案,有乙個 module_name 的變數,他們不是像我之前寫的配置一樣直接寫的模組名:

# 鏈結目標

# "target_name": "nodecamera",

"target_name": "

這個 module_name 並非乙個預定義的東西,而是在編譯的時候,通過指令傳進來的,而且還有乙個小問題,對於c++程式來說,編譯分發布版和開發版,最後生成的檔案所在的目錄也不一樣,我們怎麼方便的去切換拷貝檔案時的目錄呢?

這也可以通過編譯時,通過指令傳進來:

"rebuild": "node-gyp rebuild --module-name=nodecamera --module_path=release",

"rebuild:dev": "node-gyp rebuild --debug --module-name=nodecamera --module_path=debug",

上面兩個指令碼指令,乙個是編譯的發布版,乙個是開發版,我自定義了一些需要傳入的變數,那麼在binding.gyp中,就可以用到了:

"copies":
由於我們開發的時候,需要從js傳入中文,也需要從c++ native**返回中文,所以需要做一些處理。

有三個需要注意的地方:

1,vscode整合控制台

就在debug啟動配置檔案launch.json的當前專案配置中加一句配置

"console": "externalterminal"
2,nodejs

它似乎只能支援utf-8的中文輸出,換其他編碼,都會是亂碼,所以我們建立的js指令碼檔案,必須要選擇utf-8編碼格式

3,c/c++

大家都知道,通常來說我們新建c++檔案,如果要在**裡寫中文注釋,那麼檔案的格式一般會選擇gbk或gb2312,而vscode如果不選擇「猜測編碼格式」的話,那麼你前腳剛設定好檔案格式,後腳vscode就給你還原了,很煩人,所以只能選擇「猜測編碼格式」

這個問題反正讓我這個強迫症不爽。

另外乙個問題,js傳入的是utf8的字元,所以如果你的c++**在使用之前,還需要轉碼,從utf8轉成unicode,或者ansi;而如果你要傳出去的話,你需要把字串轉碼為utf8。

bootstrap 查缺補漏

bootstrap標題樣式進行了以下顯著的優化重置 單行內聯 多行塊 注pre.pre scrollable 控制 塊區域最大高度為340px,一旦超出這個高度,就會在y軸出現滾動條 使用者輸入 複製 table 基礎 table striped 斑馬線 table bordered 帶邊框的 ta...

React查缺補漏

1.react.createelement 根據指定的第乙個引數建立乙個react元素 第乙個引數是必填,傳入的是似html標籤名稱,eg ul,li 第二個引數是選填,表示的是屬性,eg classname 第三個引數是選填,子節點,eg 要顯示的文字內容 render react.createe...

HTML查缺補漏

標籤名必須使用小寫字母 屬性名必須使用小寫字母,屬性值必須用雙引號包裹 使用4個空格作為乙個縮排層級 class屬性值 單純全小寫,單詞之間以 分割 id屬性值使用小駝峰式命名法 元素是實體,標籤是名稱 標記 元素構成html檔案的基本物件 標籤用於標記html元素屬性 引入外部資源 定義內聯樣式 ...