最新の更新情報

2012年2月
« 1月    
 1234
567891011
12131415161718
19202122232425
26272829  

本ブログのURL

qrcode.png

雨雲の動き

お天気

 
 
吟遊詩人の戯言 内専用の記事検索...
 
 

C#からアンマネージDLLを利用するときのCoInitialize()の扱い


キーワード(クリックで関連記事が読めます) →

関連記事



 
 

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

 
 
 
 

コメントを残す

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">