核心思路:
利用VC6的编译器,利用VS2019等高版本的IDE
前提条件:
1.需要安装VC6,VS2010(daffodil依赖2010),VS2019或2017 (下载地址:https://msdn.itellyou.cn/)
2. 下载并安装daffodil
下载地址:https://bbs.pediy.com/upload/attach/201901/716193_E9PXBS9VH7VH8FH._msi
3.在高版本的IDE里面,右击工程,常规选项中,将平台工具集选择为V60
4.重启电脑,再用VS2019打开(保证文 件不被占用)
4.重新编译即可,正常情况下会一切正常
注:我遇到的问题是几个工程用一个文件夹的化,需要 一个一个生成 ,直接点生成解决方案会出现PDB被占用的情况,导致生成失败,改成一个一个生成后成功。(是不是新的IDE支持并行生成所致)
可选项,关闭并行编译(来自:Didier LapeyreTHALES Services Toulouse)
URL:https://social.msdn.microsoft.com/Forums/vstudio/en-US/b0271379-3ab1-4e08-af9e-d4f51fe8de79/lnk1201-error-at-every-build?forum=vclanguage
每次只编译一个:This bug was systematic
disabling the parallel compilation under VS2019 :
Regards,
v60 的时候, 就不能用中文命名变量, 因为 VC++6.0 只支持 ANSI 编码的源文件.
参考地址:https://bbs.pediy.com/thread-248840-1.htm
###################
版本号:
Microsoft Visual Studio 6.0: VC6.0
Microsoft Visual Studio .NET 2002: VC7.0
Microsoft Visual Studio .NET 2003: VC7.1
Microsoft Visual Studio 2005: VC8.0
Microsoft Visual Studio 2008: VC9.0
Microsoft Visual Studio 2010: VC10.0
Microsoft Visual Studio 2012: VC11.0
Microsoft Visual Studio 2013: VC12.0
Microsoft Visual Studio 2015: VC14.0
Microsoft Visual Studio 2017: VC15.0
其他错误
错误1:error LNK2026: 模块对于 SAFESEH 映像是不安全的
解决方法:
1.打开该项目的“属性页”对话框。
2.单击“链接器”文件夹。
3.单击“命令行”属性页。
4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。
错误2:解决“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ”问题
错误3:c++ - pdb文件,检查磁盘空间不足,路径无效或者权限不足
在这个例子中,我遇到类似的问题,原因是windbg持有所有pdb文件,所以当 Visual Studio 试图创建新的pdb文件时,它无法覆盖旧文件,因为windbg正在使用这些文件。
所以明显的问题是当 Visual Studio 无法用新输出文件覆盖现有文件时,它输出以下错误
错误4.fatal error C1033: cannot open program database
Switch the debug info to C7 format instead of using the PDB.
Project Options -> C/C++ -> General -> Debug Information Format and set it to C7.
结论:
在VC6巨大的老工程情况下,只能选V60编译,因为选别的到处是错误。
目标平台工具集选V60的情况下
VS2010可成功编译、调试(进入断点,提示是:模块已加载,包含符号)
VS2019可成功编译、但调试不了(无法进入断点,提示是:模块已加载,不包含符号)
其他情况-在VC6新建Hello World用于快速测试
目标平台工具集选V100(安装了2010)的情况下
VS2019可成功编译、可进入调试
目标平台工具集选V142(vs2019) 的情况下
VS2019可成功编译、可进入调试