私はx86コードとしてコンパイルするアプリケーションを持っていますが、別のバージョンとしてx64コードとしてもコンパイルできます。アプリケーションは、基本的にc#managed exeとC++ unmanaged dllの2つの部分を持っています。私は後者に問題があります。私の開発PC(Windows 7 64-bit、Visual Studio 2008)では、デプロイメントプロジェクトを使ってセットアップを作成します。このセットアップでは、アプリケーションをProgram Filesにインストールします。私もテスト用のPC(Windows 7 64-bit)を持っています。アプリケーションはまだProgram Files ...にインストールされますが、実行されません。管理されていないDLLの関数(関数)が呼び出されるとBadImageFormatExceptionが発生します。問題は、dllを生成する私自身のプロジェクトもかなり自由に利用できるいくつかのライブラリ(glew32、openal、freeimageなど)を利用していることです。これらのx64バージョンまだ何かが間違っていなければなりません。何らかの理由で、私のDLLで使用されているライブラリの1つがテスト用のPC上でx64コードとして利用できませんが、開発用PCにあります。少なくとも、セットアップPCが開発用PCで動作し、テスト用PCでは動作しない唯一の説明です。 私の質問は:どのようにして問題がどこにあるかを知ることができます。私が受け取ったエラーメッセージは、役に立つ情報を教えてくれません。私は依存して私のDLLを分析しようとしましたが、それはOKのように見えます。それはX86として多くの依存ライブラリをリストしています(これらはおそらくシステムファイルです)が、私が意図的に使うものはすべてx64としてリストされています。 テスト用PC上のWindowsがx64でなければならないのに、x86コードとしてDLLを実行しようとする理由をテストする方法はありますか?おかげさまで ネイティブx64 dllが動作しません
非常に奇妙なことに気付きました。私のアプリケーションは、x64アプリケーションのためにProgram Filesフォルダに展開されていますが、実行に失敗しています。しかし、インストールされているフォルダ内のすべてのファイルを別のフォルダ(Documentsフォルダ内)にコピーすると、アプリケーションは完全に実行されます。
SysInternalsのProcMonユーティリティを使用して、見つかったDLLを正確に確認します。 –