関連記事
- VC++のXMLパーサをC#で書き直しているが,XMLな実装作業の苦行なことモルモルモル 【2022年05月10日(火)】
- 【#SQL】久しぶりに凶悪なSQL文を書いた!120行の大作(爆 【2022年03月02日(水)】
- 【#TensorFlow】TFLiteなCーAPIを実装中 頭痛してきた(汗 【2022年02月07日(月)】
- 【#TensorFlow】TensorFlow with C++でAIシステム試験アプリを実装してみた YoutubeにAI作動動画をアップしたべ 【2022年01月20日(木)】
- 【#CSharp #VCPP】P/Invokeの沼にハマってたぁ~ ガベージがいたずらしまくる(汗 (C#の部) 【2022年01月13日(木)】
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
コメント
いきなり熱中症か?ダルいし頭痛い!
「ネットカジノで全部使った」4630万円誤送金の男性 関係者へ明かす
【独自】北朝鮮技術者、日本のスマホアプリ開発…報酬不正送金容疑で知人ら書類送検へ
【#新型コロナ】死者3万人以上の予測も 北朝鮮、パニック防止に懸命―新型コロナ
フィンランド NATO加盟申請を正式表明
【#最重大非常事件】北朝鮮で新型コロナ初確認 「最重大非常事件」、封鎖を指示
んにしてもずっと雨じゃなぁ もう梅雨なのか?(22/5/11)
宮崎:県内GW 海も山もにぎわった 観光需要 復調の期待(22/5/11)
【訃報】「ダチョウ倶楽部」のメンバー 上島竜兵さん死去 61歳