2012-08-27 49 views
0

我有一個莫名其妙的問題。 我有一個用於兩個DLL的VS2010 C++解決方案,以及使用這兩個DLL的應用程序的不同解決方案。到目前爲止,您必須手動將它們複製到應用程序的相應目錄中,才能對DLL進行更改。VS postbuild事件破壞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,一切工作正常。所以我認爲在後期製作中複製操作存在問題。

回答

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

此行覆蓋與pdb文件的Dll。可能你想要的東西是這樣的:

copy $(TargetDir)$(TargetName).pdb ..\..\AppBinDir\$(TargetName).pdb 
+0

愚蠢的複製和粘貼錯誤。謝謝 :-) – Simon