web-dev-qa-db-ja.com

32ビットCOM DLLを64ビットWindows 7に登録

32ビットのCOMコンポーネントDLLがあり、このDLLはDelphiで記述されています。 Win32 DLLです。 .NETプラットフォームのVisual C#プロジェクトでこのDLLを使用したい。

このDLLへの参照をプロジェクトに追加できません。 Windows 7 64ビットの管理者としてコマンドプロンプトに登録しようとしましたが、次のエラーが表示されます。

モジュールがregsvr32.exeのx86(32ビット)またはx64(64ビット)バージョンと互換性があるかどうかを確認します。

まず、DLLファイルをwindows/system32フォルダーに配置します。次に、管理者としてコマンドプロンプトを開きます。 regsvr32 huginalpha.dllと書いてこのコマンドを実行します。しかし、エラーが発生します。私に何ができる?

30
Murat

問題は、64ビットバージョンのregsvr32で32ビットライブラリを登録しようとしている可能性があります。 このKB記事を参照 -32ビットライブラリの場合、windows\SysWOW64からregsvr32を実行する必要があります。

52
sharptooth

Windows 64ビットプラットフォームの32ビットDLLの場合:

  1. Whatever.dllをc:\windows\sysWOW64\にコピーします
  2. 管理者としてCMDプロンプトを開きます(非常に重要)

CMDウィンドウで:

  1. CD c:\windows\sysWOW64\
  2. regsvr32 whatever.dll

次に、32ビットDLLで32ビットregsvr(c:\windows\sysWOW64\regsvr.exe)を実行します。

29
RichC

物事は今変わったと思います。 MyWin 2008 R2Boxでは、64ビットバージョンがターゲットのビット数を検出できるため、64ビットregsvr32で32ビットdllを登録できました。 %SYSWOW%フォルダーから新しい32ビットregsvr32を生成します。

参照: 2ビットの登録DLL 64ビットregsvr32を使用

4
Abhijit

http://onerkaya.blogspot.com/2013/03/register-com-dll-on-windows-64-bit.html

次のエラーのため、CLSID {...}のコンポーネントのCOMクラスファクトリを取得できませんでした:80040154クラスが登録されていません(HRESULTからの例外:0x80040154(REGDB_E_CLASSNOTREG))。

これを試してみると

c:\ windows\system32\regsvr32.exe <ファイル名> .dll

あなたはまだこの例外を取ることができます。 IISプールの詳細設定、32ビットアプリケーションの有効化:true;)

2
onerkaya

Windows 7 32ビットでcomm .dllまたは.ocxを登録するには、次の手順を実行します。

.dllまたは.ocxをc:\windows\system32にコピーします。[実行]メニューにcmdと入力します。cmd.exeを検索し、右クリックして[Run as Administrator]をクリックします。

c:\windows\system32にプロンプ​​トが表示されます

タイプ

regsvr32 ocxname.ocxは.ocxを登録します

または

regsvr32 dllname.dllと入力して.dllを登録します

2
raju chowrsiya

Framework64で実行してみてください。

例:

  • 32ビット

    C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase 
    
  • 64ビット

    C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe D:\DemoIconOverlaySln\Demo\bin\Debug\HandleOverlayWarning\AsmOverlayIconWarning.dll /codebase
    
0
Dragon-Vo

dllをsystem32またはsyswow32ディレクトリに配置し、適切なregsvr32を使用して登録します。エラーの登録に失敗したにもかかわらず、WIN 7 64を再起動し、vbアプリがdllを正常にロードしたことを示しました!!

0
anonymous

RegSvr32の両方のバージョン(32ビットおよび64ビット)で「モジュールはこのバージョンのWindowsと互換性があります」というエラーが表示されました。 Server 2008 R2(x64)でDLL(32ビット)用に構築されたXPを登録しようとしていましたが、Regsr32解決策はどれもうまくいきませんでした。しかし、適切な.Netでアセンブリを登録することは私にとって完璧に機能しました。 C:\ Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe

0
Dave Heffernan

問題が解決しない場合は、regsvr32のSysWoW64バージョンを使用するときに、すべてのライブラリの依存関係が同じアーキテクチャを持っていることを確認してください。たとえば、

regsvr32 lib_x86.dllはライブラリの登録に失敗し、%SystemRoot%\SysWow64\regsvr32 lib_x86も失敗します。ロードしようとしますlib_x86 Dependency Walkerアプリケーションに依存関係のリスト全体を表示します。いずれかのアイテムに64ビットアーキテクチャがある場合、その理由、regsvr32は32ビットライブラリのロードに失敗します。

0
Alexus

以下のリンクがその日を救った

https://msdn.Microsoft.com/en-us/library/ms229076(VS.80).aspx

上記のリンクで指定されている関連するRegSvcsを使用します

c:\ Windows\Microsoft。 NET\Framework\v4.0.30319\RegSvcs.exe ....\Shared\Your.dll /tlb:Your.tlb

0
Mathulan