関連記事
- 【C#】謎な改造アプリ,SIMD命令を導入して高速化しようか,思案中 【2023年11月14日(火)】
- Javaの”やらかし”でC#と人気逆転か 激変プログラミング言語人気ランキング 【2023年10月18日(水)】
- 【#CSHARP】次の案件のスケルトン書いてgitサーバに登録するなどと 【2023年05月16日(火)】
- 生成AI「仕事で利用」2割 正確性などに懸念(23/5/7) 【2023年05月07日(日)】
- 【#RaspberryPI】ラズパイでsudo起動の.Net6アプリがデバグできない件 【2023年04月22日(土)】
2006年10月27日 10時13分 旧ブログより
アンマネージ環境下のCOMだなんだで、CoInitialize()はどうすんの?の話
昨夜から、疑問に思っているんですが…
MSXML.DLLとか、Direct-X(Direct Show)とかを利用するとき、
WindowsのCOMシステムを初期化するためにCoInitialize()関数
を一発目で呼び出さないといけないんですわ
んで、VC++でCOMシステムを利用するDLL(アンマネージDLL)として実装した場合…
今回のXMLの話とかですな
DLLを子として、VC++で作ったプログラムが親の場合は、
VC++親側のプログラムでCoInitialize()関数を呼び出せば、これは解決!
したらDLLを子として、C#で作ったプログラムが親の場合は??
ざっとしか調べてないけど、C#の命令にCoInitialize()関数代替の命令はなかったし
でもCOMシステムの初期化はどこかでいるだろうし
ひょっとして、.Net Frameworkが、よきに計らってくれるんで、
C#環境下では、いらない??>CoInitialize()関数
あとで、もうちっと突っ込んで調べてみよう
わかったら、ここに追記するということで
さっそく追記
C#環境下では要らないみたい>CoInitialize()
今回作ったXML入出力DLLに、CoInitialize()だけを呼び出す関数を実装して
C#側でわざわざ呼び出していたんですが
これを呼ばなくても、このDLLは正常稼動しますなぁ
まぁ、冷静に考えれば、.Net Framework自体がCOMインターフェースで
できているっぽいですしな
これで、疑問が解けたな
ゆうべ、CoInitialize()を呼ばずに、動かなかったのは、別の不具合だった、と(ww
コメント
【#巨大地震】フィリピンでM7.6の地震 津波注意報発令中(23/12/3)
食欲が無いでがす
【#地震】北マリアナ諸島M7.1 (23/11/24)
【#地球寒冷化】宮崎~清武 11月なのに雪が舞ってる これは人類滅亡!(23/11/18)
NTT広報室が楽天・三木谷氏の発言に「ナンセンス」と反論 その理由は?
ダンロップフェニックスゴルフ 前回王者の比嘉選手 宮崎県入り(23/11/15)
走行中の軽自動車からタイヤ外れ女の子に当たる 意識不明 札幌
今朝は4℃台の気温 寒い寒い!高千穂五ヶ瀬は氷点下じゃげ(23/11/14)
今朝は寒いの 最低気温7℃じゃったげ(23/11/13)