うーん。はまったかも。

現在、留守番ロボットを、NPモジュールに組み込み中です。


一気に留守番ロボットを復旧するべく意気込んでいたわけですが、いきなりはまりました。
じぇんじぇん動きません。困ったチャンです。
というのは、
以前の留守番ロボットは、
C#のアプリEXE、C#のクラスDLL、C#のクラスDLL、ManagedC++のクラスDLL、C++のCOMモジュール
という階層で呼び出されていました。
一番上がGUIの部分。一番下がコアとなる形態素解析のモジュール。
これだとなんも問題がなく動いています。
現在のNPモジュールは一番上がC++です。
C++のEXE、C#のクラスDLL、C#のクラスDLL、C#のクラスDLL、ManagedC++のクラスDLL、C++のCOMモジュール
って階層で呼び出すと、ManagedC++のクラスDLLの中で、C++のCOMモジュールをCoCreateInstanceするわけですが、こいつが失敗してます。
正確に言うと、失敗しているわけじゃなくて、0x80004002、インターフェースがありません、が返ってきています。
これにたどり着くまでに、えらい時間がかかってしまった。
staticなメンバーのコンストラクタって、C#だと、レイトバインドで起動されてくるらしい。すっかり忘れてて、ぜんぜん違うところを探してた。
さて、このCoCreateの失敗をどうしたものか。
こいつが動かんと先にすすまん。ちゅうか、なんでインターフェースとれーへんねん。
以前もなんかこんなようなことやったような気もするんだよなぁ。
なんか忘れてると思うんだよなぁ。
と過去の記録を見るが、そこまで古い記録はこのBlogには残って無いらしい。。。
うーん。困ったぞ。このままじゃ、ロボットが復旧しないじゃないか。

コメントを残す