VB6で使用したいC#COMアクセス可能なdllを作成しました。TLBへのハードリファレンスを使用して、COMオブジェクトをVB6で使用できました。私が今やろうとしているのは、この参照を削除して動的にロードすることです。次のように作成しています。
Dim keylok As Object
Set keylok = CreateObject("MyClassLib.MyObject")
2行目にヒットすると、ランタイムエラー424「ObjectRequired」が発生します。しかし、私がそれを次のように作成するとき:
Dim keylok As MyObject
Set keylok = CreateObject("MyClassLib.MyObject")
正常に動作します。なぜそれが違いを生むのかわかりません。とにかく、私はまだ物理的な参照を持っている必要があるので、2番目のものを使用することはできません。
また、COMオブジェクトコンストラクターのファイルに実際に呼び出されるかどうかを書き込むための一種のデバッグとしても試しました。はい、そうです。コンストラクター内でCOMオブジェクト内の他のメソッドを正常に呼び出すこともできます。
次を使用して、動的にロードして別のC#アプリから使用することもできました。
dynamic myObj = Activator.CreateInstance(Type.GetTypeFromProgID("MyClassLib.MyObject"));
以前にそのようなものに遭遇した人はいますか?