C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C++/CLIのCOM公開がうまくいきません。


(過去ログ 88 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■52607 / inTopicNo.1)  C++/CLIのCOM公開がうまくいきません。
  
□投稿者/ 会社員A (1回)-(2010/08/17(Tue) 23:10:08)

分類:[C++/CLI] 

VS2005, C++/CLIの.NETDLLをCOM公開したいのですが、うまくいっていません。
どなたかご教授下さい。
各種サイト見ると以下の条件を満たせばよさそうなのですが、すべてしてもNGです。

■DLL作成まで。
○C++/CLIのDLLのCOM公開クラスにComVisuble属性をつける
○デフォルトコンストラクタを作成
○公開するクラスをInterfacfeを切り出し、実装する
○クラスのpublicメソッドをインライン化
■COM登録
○regasmにcodebase指定(厳密な署名がないと怒られるけど登録はできている)
○regasmに対象のDLLパスにマルチバイト文字が含まれないようにする

NGというのは、私の使用方法はExcel2003VBAから.NETdllをCOM相互運用でロードしたいのですが
CreateObjectをした時点で参照DLL or 依存関係の1つが見つからないと言われています。
tlbの作成やDLL自体、DLLの.NETからの利用はすべてうまくいっています。
"エラー"はCreateObjectするまで一切でません。tlb自体の参照もOKで
ExcelVBAのオブジェクトブラウザではメソッドも見れており、正しそうです。

Dependency WalkerでみるとMSJAVA.dllがないと言われ、ネットから探してsystem32で
regsvr32しましたが、DependencyWalkerでみる依存関係は解消されているようですが、
依然として依存関係が不足しているというエラーが発生します。

OSはXPsp3です、sp3にするとMSJAVA.dllのregsvr /uが正しくなされていないという噂も
ネット情報ではあり、ちょっと関係しているのかとも思っていますが・・。

引用返信 編集キー/
■52609 / inTopicNo.2)  Re[1]: C++/CLIのCOM公開がうまくいきません。
□投稿者/ Azulean (598回)-(2010/08/18(Wed) 00:04:37)
細かいことは調べてないですが、Office 2003 あたりは .NET Framework 2.0 を読み込むかどうかなど、ちょっと複雑な話があったように思います。

http://support.microsoft.com/kb/948461/en-us
引用返信 編集キー/
■52648 / inTopicNo.3)  Re[2]: C++/CLIのCOM公開がうまくいきません。
□投稿者/ 会社員A (2回)-(2010/08/18(Wed) 23:22:06)
No52609 (Azulean さん) に返信
> 細かいことは調べてないですが、Office 2003 あたりは .NET Framework 2.0 を読み込むかどうかなど、ちょっと複雑な話があったように思います。
>
> http://support.microsoft.com/kb/948461/en-us

回答ありがとうございます!
教えていただいたレジストリエントリの追加で参照が通るようになりました。
またこの項目に対する修正もWindowsUpdateであったようです(2008/2/18)。
WindowsUpdateで同エントリの値は書き換えられましたが、正しくロードできています。
C++/CLIに限らずC#で作ったDLLも同じ理由で参照できなかったのですが、できるようになりました。

私記載の中で誤り(?)があったため訂正しておきます。
→・Interfaceを明示的に切り出さなくても問題はないようです。
 ・公開クラスのインライン化は不要でした。
 ・regasmの/codebaseは特になくても問題なし(MSDNによると場所移動時にはつけるとのこと)
助かりました、ありがとうございます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -