找回密码
 欢迎注册
查看: 11981|回复: 6

[提问] _VC80_UPGRADE=0x0600 起什么作用?

[复制链接]
发表于 2010-2-8 11:30:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
因有人反馈说 HugeCalc V8.0.0.0 无法在 VC2008 下编译通过,我决定测试一下。

通过双击\HugeCalc\testDLL\src\ANSI_C++\ansi_c++.dsp文件,系统自动弹出Microsoft Visual Studio 2008,提示是否转换工程,选择“是”;
编译,出错,提示<iostream.h>文件不存在,去掉“.h”这个后缀即可;
后再编译,出现一堆error,说“cout”等未声明,
在头文件后追加“using namespace std;”,一切OK。

这时,我去查工程属性,在“Command Line”属性页中有如下内容:
/O2 /Ob1 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_VC80_UPGRADE=0x0600" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fp".\Release/ansi_c++.pch" /Fo".\Release/" /Fd".\Release/" /W3 /nologo /c /TP /errorReport:prompt


请问,这个"_VC80_UPGRADE=0x0600" 是起什么作用?
我试图查 MSDN,但未有说明。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-2-8 11:41:12 | 显示全部楼层
之所以提出此问,是因为有用户反映调用 HugeCalc V8.0.0.0 时会提示:

用户反馈的截图

用户反馈的截图

而我查得在VC6.0下,GetVerW的导出函数.def文件记录是:
?GetVerW@HugeCalc@@YAQBGXZ
怎么到Vc2008下就变成了:
?GetVerW@HugeCalc@@YAQB_WXZ

这就是说,两个编译器不兼容。
那么,加上 _VC80_UPGRADE=0x0600 是否就可以了呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-2-8 11:52:40 | 显示全部楼层
生成dll最好用c接口函数,这样编译器就不会再给函数名换名字了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-2-8 12:04:41 | 显示全部楼层
标准C接口已经包含了,出问题的是C++接口。
我想在VC2008下编译一个空壳的DLL,得到对应的.lib文件,让用户替换VC6下的.lib文件,也许这样即可以解决问题?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-2-8 12:09:34 | 显示全部楼层
不知道
c++接口是比较麻烦的,跨编译器容易出问题的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-2-8 12:35:39 | 显示全部楼层
这个宏的意思可能是表示从VC6升级而来。
如果原工程是VC2003的话,这个_VC80_UPGRADE=0x0710
但搞不清为什么宏是VC80,VC2008应该是VC90才对。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-2-8 13:06:51 | 显示全部楼层
我估计这个宏是从VC2005开始的,也许是通知编译器向后兼容。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-18 18:44 , Processed in 0.048134 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表