これは私の問題です。VB.NETからC++へのREGDB_E_CLASSNOTREG
Visual Studio 2015(MyLibrary)の下にVB.NETでクラスを作成しました。 の「アセンブリをCOMで表示可能にする」のようにDLLとしてコンパイルします。がチェックされているため、DLLファイルに加えて.tlbファイルが生成されます。
次に、COMクラスを使用してVisual Studio 2013の下でC++コードでこのクラスをインスタンス化しようとします。その後、私は
#import "MyLibrary.tlb" raw_interfaces_only
::私は、Visual Studioの両方のバージョンがインストールされているコンピュータから、それを行うと、それがうまく
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// Create the interface pointer.
cMyLibraryPtr l_pclMyLibrary(__uuidof(MyLibrary));
// Use it
l_pclMyLibrary->DoThings();
作品 はそのために、私はによって生成された.tlhファイルを作りますデバッグモードまたはリリースモードのいずれかです。 私のソフトウェアをインストールした別のコンピュータから起動すると、私のクラスのコンストラクタが "CreateInstance"を呼び出すと、REGDB_E_CLASSNOTREGが得られます。
私がチェックしたり、それを動作させるためにそれらのものを試してみた:
- 何もかものx86(VB.NETとC++)でコンパイルし、私は2つの32ビットによさが
- を目標と私は登録してみました私のライブラリ "regasm.exe MyLibrary.dll"を呼び出すことによって。私は登録がうまくいったことをregeditで調べた。
私は何ができるのかわかりません...だから、どんな助けも歓迎されるでしょう!
ありがとう アレックス。
指定したすべてのオプションを含め、使用した** exact ** regasmコマンドを表示します。 – TnTinMn