C++ 根据操作系统版本调用不同的动态链接库

在操作数据库时遇到一个问题:win7 sp1上编译ADO程序,在win7 sp1以下版本不能运行,(Win7系统下需要的动态文件与XP系统的需要的动态链接库不一样。需要根据系统的版本加载动态链接库。)

Win7 系统下:

需要的动态链接库

#import "MSADO15.DLL"
rename_namespace("ADOWE") rename("EOF","EndOfFile")

Win XP下

#import "msado60.tlb" rename_namespace("ADOWE")  rename("EOF", "adoEOF")

在定义类之前添加如下语句实现版本控制:

#if ((_WIN32_WINNT )==(_WIN32_WINNT_WINXP))

#import "msado60.tlb" rename_namespace("ADOWE")  rename("EOF", "adoEOF")

#elif ((_WIN32_WINNT)==(_WIN32_WINNT_WIN7))

#import "MSADO15.DLL"
rename_namespace("ADOWE")

#endif

从而能实现将程序从Win7系统拷入到XP系统中能够正常打开数据库。

在控制台环境下测试  版本控制指令:

#include <windows.h>

#include<iostream>

using namespace std;

#if ((_WIN32_WINNT )==(_WIN32_WINNT_WINXP))

int Version=1; //预编译  在预编译外面定义全局变量 然后在预编译语句
//中赋值。对变量赋值发生在编译过程,而预编译是只是实现一个简单的替换。

#elif ((_WIN32_WINNT)==(_WIN32_WINNT_WIN7))

int Version=2;

#else

int Version=3;

#endif

/*

错误写法:

int  Version ;

#if ((_WIN32_WINNT )==(_WIN32_WINNT_WINXP))

Version=1;
//无法识别Version  类型  导致程序中全局变量一直是0.

#elif ((_WIN32_WINNT)==(_WIN32_WINNT_WIN7))

Version=2;
//无法识别Version  类型

#else

Version=3;
//无法识别Version  类型

#endif

*/

void main()

{

if(Version==1)

cout<<"Window XP!"<<endl;

else if(Version==2)

cout<<"Window 7"<<endl;

else

cout<<"未定义操作系统"<<endl;

}

在Win7系统下运行程序 输出:Window 7

时间: 2024-08-09 02:17:37

C++ 根据操作系统版本调用不同的动态链接库的相关文章

userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统

1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: 1 var client = function() { 2 var engine = { 3 ie: 0, 4 gecko: 0, 5 webkit: 0, 6 khtml: 0, 7 opera: 0, 8 9 // 具体的版本号 10 ver: null 11 }; 12 13 return { 14 engine: engine 15 } 16 }()

【二代示波器教程】第14章 uCOS-III操作系统版本二代示波器实现

第14章      uCOS-III操作系统版本二代示波器实现 本章教程为大家讲解uCOS-III操作系统版本的二代示波器实现.主要讲解RTOS设计框架,即各个任务实现的功能,任务间的通信方案选择,任务栈,系统栈以及全局变量共享问题.同时,工程调试方法也专门做了说明. 14.1  注意事项(重要必读) 14.2  任务功能划分 14.3  用户任务优先级设置 14.4  全局变量分配,系统堆栈和任务堆栈 14.5  任务间通信和全局变量共享问题 14.6  uCOS-III系统调试 14.7  

powershell 判断操作系统版本 命令

powershell 传教士 原创文章.始于 2015-12-15 允许转载,但必须保留名字和出处,否则追究法律责任 一 前言 判断操作系统版本,是个老话题,bat.vbs中都有例子,这本不是重要问题,我感脚不值得写帖.但是捏,随着win版本的增多,powershell版本碎片化越来越严重了,所以<用powershell判断操作系统版本>才越来越重要了.也就是说,使用稍微偏一点的powershell命令前,你必须判断操作系统版本.或者,强烈推荐大家用最新版本win服务器,win客户机玩powe

NTDLL未文档化函数RtlGetNtVersionNumbers获取操作系统版本

作为新手,对获取操作系统版本号好奇过,因为曾经假象过一个场景:如果将来在windows xp环境下编译的程序,在windows xp跑会怎样, 在windows 2003,windows 7,windows 8又会怎样,如果程序在windows 7以上版本需要特殊处理又该怎样判断操作系统版本呢. 带着这个好奇也了解过GetVersion和GetVersionEx函数,他们的最低使用需求是Windows 2000,以下是一些官方的测试代码. GetVersion function #include

CentOS操作系统版本信息查看和隐藏

工作中需要查看一下操作系统版本,或者是源码编译安装时,到网上下载对应的源码包,需要提前获取操作系统版本信息.然而,操作系统信息能简单使用命令获取,显然是不安全的,这样给我们的系统带来很大的隐患.这就需要我们对操作系统信息进行一定的伪装,来迷惑想要攻击我们系统的人.这样会使我们的系统更加安全. 查看操作系统版本信息的命令很多,下面列出一些常用的查看方式: 1.uname -a [[email protected] ~]# uname -a Linux localhost.localdomain 2

2016年3月全球操作系统版本份额:Win10仅次win7

IDC评述网(idcps.com)04月07日报道:根据市场研究公司Net Applications最新数据显示,在2016年3月全球操作系统市场上,Windows的冠军地位不可动摇,份额与上月基本保持一致,为90.45%.再细看版本排名,全球前4名均是Windows版本,其中Win 7最受欢迎,其次是受微软力捧的Win 10.接下来,请看IDC评述网整理的相关数据分析. (图1)2016年3月全球操作系统市场份额分布图 通过图1可知,在2016年3月全球操作系统市场份额大战中,Window以9

思科ASDM导入与实战配置经验总结-操作系统版本V842

这几天在空的时候研究了下思科的ASDM管理软件,值得眼前一亮的是,完全符合工程师思维与逻辑,尽管界面确实让工程师不习惯,但是客观的讲,做的还是不错的,而且这还是好几年前的产品. 今天写一个如果导ASDM和配置ASDM的学习记录.市面上有很多,但是均没有分清楚IOS的版本,所以吐槽一句,翻墙出去看思科的文档一个小时就能解决,但是在百度等上找上半天都有可能是错误的操作. 结论:看教程还是去官网上会比较好. 思科防火墙ADSM上传与安装配置文档---亲测可用-IOS版本V842 思科IOS-v842固

利用yum升级操作系统版本(目前最新6.6)

1. 查看操作系统版本 [[email protected] ~]# cat /etc/redhat-releaseCentOS release 6.4 (Final) 2. 让操作系统能够与外网通信 [[email protected] ~]# ping www.baidu.comPING www.a.shifen.com (119.75.218.70) 56(84) bytes of data.64 bytes from 119.75.218.70: icmp_seq=1 ttl=128 t

远程批量获取Linux和Windos操作系统版本(内核)

在不登录远程主机的情况下,可以查看远程主机的服务器操作系统版本(内核). 脚本执行前提: 1.拷贝check_snmp到脚本执行的主机中或在此主机中安装nagios; 2.保持list.txt中只有一个IP列 1 #!/bin/bash 2 #echo "">list_os.txt 3 \cp list.txt list_1.txt 4 awk {'print $1'} list.txt |while read line 5 do 6 echo $line 7 info=`/us