visualc&x2B+;发布版本中的6个编译错误 我可以在Visual C++ 6的非Unicode调试模式下编译我的32位ATL项目(COM库),所有的服务包都在Windows 7 64位上。无论是正常运行还是以管理员身份运行,它都可以正常工作

visualc&x2B+;发布版本中的6个编译错误 我可以在Visual C++ 6的非Unicode调试模式下编译我的32位ATL项目(COM库),所有的服务包都在Windows 7 64位上。无论是正常运行还是以管理员身份运行,它都可以正常工作,c++,compiler-errors,windows-7-x64,visual-studio-6,C++,Compiler Errors,Windows 7 X64,Visual Studio 6,但非Unicode版本构建失败 对于初学者来说,VC++编译器无法找到包含文件(比如schannel.h,它属于Platform SDK,所以位于另一个文件夹中)。编译器在发布版本中只扫描了VC++本身的核心Include文件夹(尽管事实上平台SDK的文件夹是在选项中指定的,并且在调试模式下没有任何问题)。我试图将包含文件从SDK复制到程序文件(x86)之外的某个位置,因为我认为VC++6.0在UAC问题上可能不够好(并且无法以某种方式访问原始受限位置中的包含),但这没有帮助。最后,我将编译器找

但非Unicode版本构建失败

对于初学者来说,VC++编译器无法找到包含文件(比如schannel.h,它属于Platform SDK,所以位于另一个文件夹中)。编译器在发布版本中只扫描了VC++本身的核心Include文件夹(尽管事实上平台SDK的文件夹是在选项中指定的,并且在调试模式下没有任何问题)。我试图将包含文件从SDK复制到程序文件(x86)之外的某个位置,因为我认为VC++6.0在UAC问题上可能不够好(并且无法以某种方式访问原始受限位置中的包含),但这没有帮助。最后,我将编译器找不到的所有文件复制到VC++本身的Include文件夹中,这让我可以更进一步

现在,编译器以一种新的方式抱怨(仅举几个例子): C:\ProgramFiles(x86)\Microsoft Visual Studio\VC98\INCLUDE\wintrust.h(139):错误C2143:语法错误:缺少“;”在“*”之前 C:\Program Files(x86)\Microsoft Visual Studio\VC98\INCLUDE\wintrust.h(139):错误C2501:“CMSG\u签名者\u信息”:缺少存储类或类型说明符 C:\Program Files(x86)\Microsoft Visual Studio\VC98\INCLUDE\wintrust.h(139):错误C2501:“psSignerInfo”:缺少存储类或类型说明符

但是错误日志不再包含任何“未找到文件”或类似的内容。尽管这些错误看起来很像“找不到文件”的症状,但这只是一个猜测。无论如何,我把平台SDK的完整包含文件夹复制到了VC++包含文件夹中,但没有任何帮助

同样,调试构建也很好。然后,我开始比较我正在使用的Debug和Release MinDependency非unicode版本的编译和链接选项,并最终使它们完全相同

我发现唯一让VC++疯狂的是它在结果文件中放置的大量调试信息

简而言之。如果我使用/Zl开关(用于编辑和继续的程序数据库)进行编译,它就会工作。其他一切都失败了(只包括程序数据库)

早些时候,当我赢得XP时,我没有这样的问题。在Win7 64位上使用旧的VC++6.0时是否仍然可以使用此功能?我非常需要旧的VC++,因为新的VC++在兼容性方面有太多问题(我也有VS2008,那里一切都很好,但即使它链接到MinDependency,生成的.DLL也不能与一些非常旧的系统一起工作)


我的猜测是,VC++甚至可能在使用/Zl开关时使用不同的编译器。但这只是一个猜测,不管怎样,我不知道如何检查这个,下一步该怎么做。有什么线索吗?

呸,终于找到了!不知何故,选项/目录中的每个路径都添加了额外的空间,这使得VC++无法找到一些包含或lib文件(这发生在不同的系统上,XP和Seven,也许在复制/粘贴目录路径的过程中添加一个空间是典型的)。有趣的是,VC++在这种情况下是不一致的,更改构建模式可能会激活编译器中的不同代码路径-一些路径会修剪目录名,而另一些路径则不会。如果出于任何原因必须使用15年前的编译器,您也可能需要维护WinXP,甚至Win2K或更早版本,开发机器。至少,使用32位版本的Windows。我已经在研究这些选项。至少我可以用我的PC进行开发和调试(因为它与调试版本一起工作),并到别处编译发布版本(这不是每天都会发生)。不完美,但总比没有好。啊!!在WinXP 32位上进行了尝试,但遇到了相同的问题。看起来VS 6.0 SP6和平台SDK在2003年2月(2002年8月)出现了问题。早些时候,我使用了它们的另一个版本,比6.0稍旧一点,SDK稍旧一点,尽管谷歌说VS6.0SP6和平台SDK 2003年2月应该可以很好地协同工作。。。