VC6 程序 在VS2019或其他高版本上编译运行

核心思路:

利用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 :

  • Select " Tools -> Options... "
  • Select "Projects and solutions" then "Build and run..." in the dialog box
  • Set the "maximum number of parallel project builds" to "1"

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-”命令行选项不兼容 ”问题

VC6 程序 在VS2019或其他高版本上编译运行_第1张图片

VC6 程序 在VS2019或其他高版本上编译运行_第2张图片

VC6 程序 在VS2019或其他高版本上编译运行_第3张图片

错误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可成功编译、可进入调试

 

你可能感兴趣的:(C++)