none
x64版 ActiveX DLL は ComClass で作れますか? RRS feed

  • 質問

  • こんにちは。

    掲題の通り、ComClass を使って ActiveX DLL を作成したいです(x64 版)。

    x86 版は作成でき、32bitアプリから利用できる事が確認できました。

     

     

    ■開発環境

    Windows2003(x86)

    VS2005 Professional(VB2005) SP1

     

     

    ■動作環境

    Windows2008(x64)

     

     

    ■試したこと

    x64 版を作ろうと下記の操作を行いました。

     

    1.新規のプロジェクトを「クラスライブラリ」を選んで作成。

    2.Class1.vb を削除して、テンプレートから「Comクラス」を選んで追加。

    3.下記のテストメソッドを追加。

     

    Public Sub M(text As String)

    MsgBox(text)

    End Sub

     

    4.構成マネージャで「x64」を追加

    5.プロジェクトプロパティのターゲットCPUを「x64」に設定。

    6.ビルド

     

    ビルドしたところエラー1件と警告2件が出ました。

     

    [エラー]

    ファイル "~.dll" は有効なアセンブリではありません。

     

    [警告]

    アセンブリ "~" をビルド中に問題が発生した可能性があります: 参照アセンブリ 'mscorlib.dll' は異なるプロセッサを対象にしています。

    アセンブリ "~" をビルド中に問題が発生した可能性があります: 参照アセンブリ 'System.Data.dll' は異なるプロセッサを対象にしています。

     

    ただ一応 DLL 自体は作成されるので、試しにそれを動作環境に持っていき

    regasm ~.dll /codebase

    として登録しようとすると、以下のエラーになります。

    RegAsm : error RA0000 : Failed to load 'other.dll' because it is not a valid .NET assembly

     

    ---

     

    ComClass で x64 対応の ActiveX DLL の作成は不可能なのでしょうか?

    アドバイス等よろしくお願いいたします。

    2008年9月18日 8:11

回答

すべての返信

  • 32ビット版のregasmを使っていませんか?

    64ビット版のregasmを使う必要があります。

     

    C:\Windows\Microsoft.NET\Framework64\ 以下にあるようなバイナリです。

     

    参考にしたサイト:

    http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.languages.csharp/2007-01/msg00772.html

     

    2008年9月18日 14:48
    モデレータ
  • Azulean さま、書き込みありがとうございます。

    仰る通り64ビット版の RegAsm があり、それを使って登録し、動作確認ができました。

     

    ご指摘されてみると確かに64ビット版があってしかるべきと思いましたが、自分では気が付きませんでした。

    ビルドエラーの時点で、ビルドでエラーでてるんだから、RegAsm も成功しないんだろうなーと思いこんでいました。

    こういうところに気づくかどうか、Web検索の仕方もそうですが、もっとセンスがを磨かねばと思います。

     

    本当にありがとうございました。助かりました。

     

    2008年9月19日 1:20