VB6で使用したいC#COMアクセス可能なDLLを作成しました VB6でCOMオブジェクトをTLBへのハード参照で使用することができました。 私が今やろうとしていますと、この参照を削除し、次のように私はそれを作成してい動的 それをロードすることです:VB6:実行時エラー424 CreateObjectを呼び出すとき
Dim keylok As Object
Set keylok = CreateObject("MyClassLib.MyObject")
私は2番目の行を打つたら、私は実行時エラー424が「必要なオブジェクト」取得します。 しかし、私は次のように作成します:
Dim keylok As MyObject
Set keylok = CreateObject("MyClassLib.MyObject")
これは問題なく動作します。 なぜ違いがあるのか分かりません。とにかく私はまだ物理的な参照を持つ必要があるので、私は2番目のものを使用することはできません。
私はCOMオブジェクトコンストラクタのファイルに書き込むデバッグの一種として、実際に呼び出された場合にも試みました。そしてそうです、私はコンストラクタ内でCOMオブジェクトの他のメソッドを正常に呼び出すことさえできます。
私が使用していても、動的にロードし、別のC#アプリからそれを消費することができました:
dynamic myObj = Activator.CreateInstance(Type.GetTypeFromProgID("MyClassLib.MyObject"));
は前にそのようないずれかの出会い何かしましたか?
と書かれていました。http://support.microsoft.com/kb/245115を読んで、レイトレインバインディングが早い段階からどう違うかを詳しく考えてください。特に、オブジェクトの有効なIDispatchを確認できますか? – rskar
私はC#でそれを後でバインドすることができました。だから、私は自分のコンポーネントが一般的に遅れていると思うでしょう。実際に私のコンストラクタも呼ばれています。 – engmtm
いくつかの追加情報:私のC#dllはVS 2010(.NET 4.0)でビルドされました – engmtm