投稿日 | : 2006/08/16(Wed) 11:23 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^3: プロセス間通信について |
> その実行形式のプログラムを実行時にDLL作成用開発環境との関係はどうなるのでしょうか?
配置済みの DLL と、起動している DLL プロジェクトが一致するものであれば、
プロジェクト側が起動されると思います。(side-by-side モードで実行されない限りは)
たとえば、利用側が参照設定せずに利用している場合、ProgId すなわちプロジェクト名と
クラス名が完全に一致していれば、DLL開発環境側が実行されることになります。
あるいは利用側が参照設定しており、アーリーバインドで処理しようとしている場合には、
guid で判断されるため、バージョン間の互換性が重要になってくるかと思います。これは、
DLLプロジェクトのプロパティで、[コンポーネント]タブで設定される物の事です。
配置済みの DLL があるならば、それを OLEVIEW.EXE 等でチェックして、
そのクラスのCLSID を確認してみてください。
その上で、DLL プロジェクト起動時に作成されるレジストリのキーの、
HKEY_CLASSES_ROOT\Project1.Class1\CLSID キーの値
が一致しているかどうか、および、
HKEY_CLASSES_ROOT\CLSID\{……CLSID値……}\ キーの内容
が適切に書き換わっているかどうかを確認してみてください。
> 「ファイルが見つかりません」と怒られてしまいます。
ん…? それも奇妙ですね。
もしもDLL が見つからないなら、「ファイルが見つかりません」ではなく、
------------------------------------------------------
実行時エラー '-2147024770 (8007007e)':
オートメーション エラーです。
指定されたモジュールが見つかりません。
------------------------------------------------------
というエラーが、オブジェクト生成時に表示されると思っていたのですが…。