2

x64 コードから x86 dll (サードパーティ、ソースへのアクセスなし) にアクセスする必要があります。私の調査では、dll を COM+ ラッパーに配置し、OOP サービスとしてアクセスすることが最も適切なアプローチであることが示されました。

ここまでは順調ですね。

したがって、「NET 2.0 Interoperability Recipes - A Problem Solution Approach」のガイドに従ってください (ただし、VS2010 と .NET4 を実行しています)。概念実証サービス (dll) を作成し、サーバー アプリケーションとして実行されるサービスが OOP であることをテストするクライアント (exe) を作成しました。どちらも機能し、コンポーネント サービスを介してサービスを無効にするとサービスが強制終了されるため、正しいルートを使用しているように見えます。

これはすべて x86 です。

クライアントを x64 に変更すると、「BadImageFormatException」が発生します。これは、単に x86 dll をロードしている場合に予想されることですが、これは OOP を実行しているはずです。

私は何かが欠けていることを知っています、そしてそれはおそらく非常に明白です。

その他の注意事項:

1) regsvcs post build を実行し、regsvcs /u prebuild 2) 問題の dll がそのままスタックしており、私のメイン コードベースは x64 でなければなりません

4

1 に答える 1

0

すべてのプラットフォームで、プログラムを強制的に x86 モードで実行する必要があります。メイン アセンブリのプロパティに移動し、[ビルド] タブで、[プラットフォーム ターゲット] を [任意の CPU] から [x86] に変更します。これにより、x64 マシン上であっても、すべてのアセンブリが x86 モードで実行されるようになります。

于 2012-07-11T10:08:32.957 に答える