VB6で使用する必要があるC#アセンブリがあります。以前のマシン/ OSでこれを動作させていましたが、現在のWindows 10マシンでは、VB6/VS6 IDEでデバッグするときに動作させることができません。たびに、私はラインをヒット:VB6アプリケーションでは、c#dllのCreateObjectがIDEで "ActiveXコンポーネントはオブジェクトを作成できません"というエラーが発生します
Set interop = CreateObject("BTR.Core.Interop.Activator")
私が受け取る「ActiveXコンポーネントはオブジェクトを作成できません。」エラー。
コンパイルされたVB6アプリケーションを実行すると、すべて動作します。だから、VB6/VS6 IDEに関するどこかの権限の問題でなければなりません。
私はregasmの32ビット版を使用するように言及している他の投稿を見つけました。私はregasm
とC:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe
の両方を無駄にしようとしました。
コンパイルされたVB6アプリケーションを実行すると(そしてアプリケーションとVB6アプリケーションが以前のマシンで動作していたため)、C#DLLをCOMに公開するためのすべての設定が正しいことがわかりましたが、もし誰かがそれが適切だと思うなら、それについての詳細を掘り下げて幸せです。
この記事(Late binding run-time error in VB6 when creating an object from a .NET assembly)は、regasmを実行した後にレジストリに何が含まれるべきかについて話しています。すべての設定はWOW6432NODEキー
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID\{2942ED53-BBC4-311D-9840-1FE610885592}
にあります。
ある種の32/64ビットの競合があるかどうかはわかりません。どんな提案も感謝しています。
VBPファイルのCOM参照がアプリケーションのコンパイル時と同じであることは確かですか? VBP内の参照が.NETコード/アセンブリで指定されたインターフェイスと一致しない場合、このエラーが発生する可能性があります。 – DaveInCaz
私はリファレンスを持っていませんでした。私はレイトバインディングのCreateObjectをやっています。だからこそ私はtlb参照を最初から追加しようとしていることについて懐疑的でした。奇妙な。 – Terry