私はVS10で次のプロジェクトを書きました:
- を呼び出す C# (.net 4.0) プログラム
- boost::thread を利用する C++ アンマネージ dll
- C# 実行可能ファイル、C++ dll、boost::thread dll、その他のファイルを含むセットアップ プロジェクト。さらに、インストール中にフレームワーク .net 4.0 がインストールされているかどうかがチェックされ、インストールされていない場合はダウンロードされます。
コンパイル (3 つのプロジェクトのそれぞれで x64) は問題なく、プログラムは私の PC (Windows 7 64 ビット) で動作します。他のコンピューター (すべて Windows 7 64 ビット) でプログラムをテストしたところ、次のことがわかりました。
- VS10とBoostを搭載したものでは、プログラムが機能します
- VS10 および Boost を使用しないプログラムでは、C++ Dll でエラーが発生します。
問題は、一部のブースト Dll が欠落していることだと思います。私は正しいですか?または、問題はVSに関連している可能性がありますか?
編集:
プログラムの構造は次のとおりです。
- いくつかのパラメーターが設定されているメイン フォーム (C#)、次に backgroudworker が呼び出す
- 独自の処理を行い、boost::thread を使用する C++ DLL
- それはいくつかの計算を行います
- 結果が得られると、それらをファイルに書き込みます
- その計算などを続行します
- メインフォームには、結果ファイルを探して結果を処理する filesystemwatcher があります。
また、エラーが発生すると、メインフォームが正しく読み込まれ、パラメーターを設定できました。エラーは、バックグラウンド ワーカーが自分の作業を開始する (C++ DLL を呼び出す) ときに発生します。
したがって、フレームワークのインストールに問題はないと確信しています。
更新:
セットアップ プロジェクトにいくつかの DLL を含めるのを忘れていたことが判明しました。今、それらを含めてエラーが変更されました。
さて、以前と同じ時点で (そして同じコンピューター上で) 別のエラーが発生します。
BadImageFormatException: 不正な形式のプログラムをロードしようとしました
この記事を読みましたが、C# プロジェクトと C++ DLL の両方で x64 を設定しており、セットアップ プロジェクトは TargetPlatform x64 になっています。何か案が?