2012-08-27 48 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