0

どういうわけか奇妙な問題があります。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を手動でコピーすると、すべて正常に機能します。したがって、ビルド後のコピー操作に問題があると思います。

4

1 に答える 1

1
copy $(TargetDir)$(TargetName).pdb ..\..\AppBinDir\$(TargetFileName)

この行は、DLLをpdbファイルでオーバーライドします。おそらくあなたはこのようなものが欲しいでしょう:

copy $(TargetDir)$(TargetName).pdb ..\..\AppBinDir\$(TargetName).pdb
于 2012-08-27T08:24:22.640 に答える