.NET COM DLL(デバッグx64)を1台のマシンに構築しました。私はすべてのセットアップとそこで働いている(私はC:\ Windows \ Micorosft.NET \ assemblyとOLEVIEWERで見ることができる)。COM .NET DLLがGAC(REGDB_E_CLASSNOTREG)に登録されていません
私はdllを別のマシン(MIDLから生成された.hと.cファイルとともに)に持っていました。私は、これらの手順を実行することで、GACにdllを登録します。http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html - キーペアを作成し、MISLを生成し、MISLからアセンブリを再構築してGACに追加します。それはGACにあるようだし、gacutil/l MyDllNameで検索することができます。しかし、私のクライアントアプリケーションでは、それに対してリンクするとき、実行時にCoCreateInstance
を呼び出すときに私はREGDB_E_CLASSNOTREG
(HRESULT)を取得します。私はC:\ Windows \ Microsoft.NET/AssemblyやOLEVIEWではdllを見ることができません。
私は何か不足していますか、何か間違っていますか?あなたの.NETのCOMのDLLが登録されていないので、あなたがエラーREGDB_E_CLASSNOTREG
を取得している
おかげ
Regasm.exeを使用してアセンブリを登録することは一度も言及されていません。プロジェクトの "COM interopの登録"チェックボックスを使用すると、あなたのdevマシン上でスキップすることができます。もちろん、ユーザーのマシンではありません。 MIDLを使用することはかなり奇妙なbtwです、それはコーシャーを聞こえません。 –
MIDLを使用しない場合(http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.htmlのチュートリアル)、「コーシャー」とは何ですか?それをやる方法? (btw私の腸の考えMIDLを使用して少しハッキーだった) – Prof
あなたは通常、C++プログラムで#import指令を使用します。 –