もくじ
https://tera1707.com/entry/2022/02/06/144447#COM
やりたいこと
COMでなにかをしないといけないときに、自分は
ということをするのだが、この必要なinterfaceや構造体などを、C#で定義する
の部分がめんどくさいのと、よく「これでいいはずなのに、なにかエラーになってしまう」ということになる。
その時のよくやる対処方法のメモ。
やりかた
C++のヘッダーをみる
基本は、以前の記事に書いたように、C++のコードの中にあるintefaceや構造体の上でF12を押して、.hの中の定義を見て、一個一個手でC#に直していく。
※その時のやり方、ルールもその記事参照。
ただ手で直すと、なんだかうまく動かない、メモリアクセス違反になる、とかなんか変なことに良くなってしまう。
その時は、今のところ、下のようにするのが一番早いと思う。
OSSを参考にする
Win32APIをC#から叩きたいときは、pinvoke.netというサイトをよく参考にさせてもらっているので、COMの定義についてもそういうサイトがないかな?と思ったが、見つけられなかった。
色々見たところ、COMを使っていろいろするためのOSSがgithub上に上がっていて、その中身を参考にさせてもらうのが一番わかりやすかった。
最近よく参考にしているのが下記。
https://github.com/dahall/vanara
このリポジトリの中で、調べたいinterfaceや構造体の名前を検索すれば出てくるので、それを見て勉強するのが一番やりやすい。