greatws
C/C++/VC++——不怕做不到,只怕想不到
Email:greatws # 163.com
QQ:34607100
C++博客
首页
新随笔
联系
聚合
管理
随笔-12 评论-69 文章-0 trackbacks-0
以后要注意stdafx.h和targetver.h里的系统版本定义啊
转载请注明出处
http://www.cppblog.com/greatws/archive/2008/05/05/48933.html
做了个DNS查询有关的程序,用到了DnsQuery和DnsRecordListFree这2个函数,拿到导师那里一用,竟然出现一个对话框,“无法将函数DnsFree定位于动态连接库Dnsapi.dll上”,我就奇怪了,在我机器上是好好的。最后一想,导师那边是win2000的,我是winXP的,可能API函数改变了。于是回来查了下MSDN,看到Requirements是Requires Windows Vista, Windows XP, or Windows 2000 Professional.,没错啊有windows2000的阿,最后鼠标放到DnsRecordListFree上,见到一个宏#define DnsRecordListFree(p,t) DnsFree(p,DnsFreeRecordList),WK函数被改变了!!!查了下DnsFree这个函数,Requires Windows Vista or Windows XP.,只能在Vista和XP上用,难怪找不到了,那就改啊,翻到windns.h看到
#if
(_WIN32_WINNT >= 0x0501)
#define
DnsRecordListFree(p,t) DnsFree(p,DnsFreeRecordList)
#else
VOID
WINAPI
DnsRecordListFree(
__inout_opt PDNS_RECORD pRecordList,
__in DNS_FREE_TYPE FreeType
);
#endif
/* _WIN32_WINNT >= 0x0501 */
当版本大于等于0x0501时就定义这个。。。看看定义的是什么版本,targetver.h
#ifndef WINVER
//
指定要求的最低平台是 Windows Vista。
#define
WINVER 0x0600
//
将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif
#ifndef _WIN32_WINNT
//
指定要求的最低平台是 Windows Vista。
#define
_WIN32_WINNT 0x0600
//
将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif
我定义成0x0600这里就要使用DnsFree这个函数了,而Windows2000的版本号是0x0500,WinXP是0x0501,难怪在导师的机器上会说无法定位了,现在把windows版本号改为0x0500,那也就是执行else部分的宏,就是直接使用DnsRecordListFree这个函数了,速度行动!!wait~~wait~~wait~~编译通过,拿过去测试,一切正常,OK了。
看来以后编程要注意版本号了,以提供对不同版本操作系统的兼容性。以前一直都忽略这个问题- -汗个
by greatws
posted on 2008-05-05 21:50
greatws
阅读(1435)
评论(3)
编辑
收藏
引用
评论:
#
re: 以后要注意stdafx.h和targetver.h里的系统版本定义啊 2008-05-06 09:17 |
梦在天涯
haha,这个targetver.h只有在08才有的把!
回复
更多评论
#
re: 以后要注意stdafx.h和targetver.h里的系统版本定义啊 2008-05-06 17:48 |
Ashuar
想必楼主是个MM,嘿嘿!用这么粉的打底!
回复
更多评论
#
re: 以后要注意stdafx.h和targetver.h里的系统版本定义啊
2008-05-06 19:35 |
greatws
@梦在天涯
恩,以前版本的VC版本定义都在stdafx.h里
回复
更多评论
刷新评论列表
标题
姓名
主页
验证码
*
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
<
2008年10月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年10月 (1)
2008年9月 (4)
2008年8月 (3)
2008年5月 (1)
2008年4月 (3)
积分与排名
积分 - 12387
排名 - 165
最新评论
1. re: OLE操作Excel编译错误处理
= ="
楼主太厉害了~本人没有那么强
--Kven
2. re: OLE操作Excel编译错误处理[未登录]
居然抢到沙发了 耶~
ps:我觉得楼主很厉害~很有才~
--fangfang
3. re: Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
msdn上有个例子UTF8 Helpers讲的就是这些
--沈臻豪(foxtail)
4. re: 32位系统上使用64位变量需要特别注意
编译器的bug……
--陈梓瀚(vczh)
5. re: 32位系统上使用64位变量需要特别注意[未登录]
这么做的意义是什么呢?这么做肯定是非法操作啊,没看懂。。。
--megax
评论排行榜
1. 谈谈C/C++和.NET以后的走向(26)
2. 今天做了个小试验,类成员变量的初始化,发现放在参数列表和构造函数体内是一样的(12)
3. 被忽悠了,一直以为lea和mov指令差不多的,今天算是知道了,顺便测试了下C内联汇编的效率(10)
4. Ansi、Unicode、UTF8字符串之间的转换和写入文本文件(7)
5. 改变习惯,使用C的库函数(5)