Closed9

goでusb接続イベントを拾いたい

nabeyangnabeyang

node-usb-detectionはmacOSの場合はIOKit, CoreFoundation使ってるだけっぽい。libuvは使わなくても良い。贅沢言わずにcgoで頑張る方が早そう。そして、cgoは使ったこと無い。

nabeyangnabeyang

上の例のソースコードtacogips/mac_switch_watchはgithubに公開されてる。C言語部分がコメント内にかかれているので、vscodeの機能が効かなくてつらい。外部ファイル化の方法を調べよう。

nabeyangnabeyang

C言語の関数を呼び出すところは、使う関数のヘッダファイルを次のように書く。
cgo darwin ...のようにdrawinを書くとmacOSのときだけの処理になる。

//#cgo darwin LDFLAGS: -framework IOKit -framework CoreFoundation
//#include "header.h"
import "C"
nabeyangnabeyang

C言語はとりあえずプロジェクトルートにあるとgo buildで一緒にビルドしてリンクしてくれるみたい。さらにxxx_darwin.cとかxxx_linux.cとかxxx_windows.cのような名前にするとmacOSのときだけビルドするようになる。

nabeyangnabeyang

macOSは接続イベントは拾えるようになったので、windowsをC++で試行錯誤中(元々見本がC++なので)。

nabeyangnabeyang

windowsでもイベント拾えるようになった。結論としてはlibuvは要らない。

このスクラップは2021/05/16にクローズされました