7

VB6/VBA で利用できるようにしたい .Net で書かれたクラス ライブラリがあります。私が試したことはうまくいきませんでした(明らかに、私はこの質問をしています)。これが私がしたことです:

  1. Visual Studio 2010 Express でクラス ライブラリ プロジェクトを作成し、コードをクラス モジュールに配置しました。
  2. プロジェクトのプロパティを開き、「アセンブリ情報」に移動し、「COM を可視化する」にチェックを入れました。
  3. 「高度なコンパイル」オプションに移動し、.Net 2.0 をターゲットにしました (これは非常に単純なコードです)。
  4. 次に、「システム」を除くすべての参照を削除しました。
  5. プロジェクトをビルドし (警告やエラーなし)、DLL を Bin フォルダーから C:\Windows\System32\ にコピーしました。
  6. RegSvr32 を実行して DLL を登録したところ、エラーが発生しました。

モジュール「MyDll.dll」がロードされましたが、エントリポイントの DLLRegisterServer が見つかりませんでした。

「MyDll.dll が有効な DLL または OCX ファイルであることを確認してから、再試行してください。

明らかに、私の最初の試みは少し単純でした。誰かがガイダンスを提供できますか?

4

4 に答える 4

10

ステップ6は間違っています。[ComVisible]タイプの.NETアセンブリがRegasm.exeに登録されます。DLLをGACにインストールしない場合は、/codebaseコマンドラインオプションを使用します。/ tlbコマンドラインオプションはタイプライブラリを作成し、VB6プロジェクトで使用できます。

于 2010-07-27T18:29:18.353 に答える
3

開始するには、インターフェイスのGUIDを定義し、どのクラスがどのインターフェイスを実装するかをマークする必要があります。MSDNにはスタートガイドがあります。RegSvr32を実行する必要はありませんが、アプリが見つけることができる場所にDLLを配置する必要があります。

Regasm.exeを使用してアセンブリを登録した後、それをグローバルアセンブリキャッシュにインストールして、任意のCOMクライアントからアクティブ化できるようにすることができます。アセンブリが単一のアプリケーションによってのみアクティブ化される場合は、そのアプリケーションのディレクトリに配置できます。

ここには、プロセス全体の概要も示されています。

于 2010-07-27T18:30:00.910 に答える
0

私は、RegSvr32 が非 .NET DLL でしか動作しないことを確信しています。.NET アセンブリはグローバル アセンブリ キャッシュ (GAC) に格納されます。gacutil.exe を実行する必要があります。

于 2010-07-27T18:24:28.923 に答える
0

RegSvr32 の代わりに GacUtil を使用します。RegSvr は VB6 で作成された dll に使用され、.NET DLL にはグローバル アセンブリ キャッシュに追加されるため、GacUtil を使用する必要があります。

于 2015-01-29T14:43:18.907 に答える