どういうわけか奇妙な問題があります。2つのDLL用のVS2010C++ソリューションと、2つのDLLを使用するアプリケーション用の別のソリューションがあります。これまで、DLLの変更については、アプリケーションの適切なディレクトリに手動でコピーする必要がありました。
ビルドごとに変更されたDLLを自動的にコピーするビルド後のイベントを導入しました。
copy $(TargetDir)$(TargetName).lib ..\..\lib\AppDir\$(TargetName).lib
copy $(TargetPath) ..\..\AppBinDir\$(TargetFileName)
copy $(TargetDir)$(TargetName).pdb ..\..\AppBinDir\$(TargetFileName)
DLLのビルド後にアプリケーションを起動しようとすると、「無効なイメージ」エラーと、Windowsに適していない可能性があるという説明が表示されます。DependencyWalkerでDLLを開くと、「DOSまたはPE署名が見つかりません」というエラーが表示されます。
DLLを手動でコピーすると、すべて正常に機能します。したがって、ビルド後のコピー操作に問題があると思います。