0

ac#クラスライブラリプロジェクトで64ビットのcom interop dllを参照し、それを初期化するコードがあります。このライブラリはasp.netプロジェクトで使用されます。

ビジネスレイヤープロジェクトとasp.netはc#にあるので、任意のCPUプラットフォーム用に構成しました。また、私は設定しました

ビジネスレイヤープロジェクトでcomクラスを初期化しようとすると、以下のエラーが発生します。このエラーの原因と、64ビットでカバーしているのになぜWin32アプリケーションが無効であると記載されているのかについてのアドバイス。

次のエラーが原因で、IClassFactoryからCLSID{31DE5D69-1F5F-434D-8855-F627EAEB2404}を使用してCOMコンポーネントのインスタンスを作成できませんでした。800700c1は有効なWin32アプリケーションではありません。(HRESULTからの例外:0x800700C1)。

ありがとう

4

2 に答える 2

2

x86プロセスからx64COMライブラリを参照することはできません。構成を「任意のCPU」に設定すると、アプリケーションの初期化中にワード長が終了します。つまり、x86システムでアプリケーションを起動すると、x86構成が使用され、x64ライブラリを参照できなくなります。

x64ベースのCOMサーバーを使用するには、x64ライブラリを作成する必要があります。IIS構成では、アプリケーションプールもx64を使用する必要があります。ただし、この記事を参照して、プロジェクトに「任意のCPU」を使用することは避けてください。

于 2013-01-02T12:49:16.373 に答える
0

Visual Studio 2012の64ビットコマンドプロンプトにdllを登録する必要がありました。これにより、dllが64ビットとして正しく登録され、c#プロジェクトで使用できました。

于 2013-01-16T07:31:40.920 に答える