当前位置:文档之家› VC2005-应用程序正常初始化失败-0xc0150002

VC2005-应用程序正常初始化失败-0xc0150002

VC2005-应用程序正常初始化失败-0xc0150002
VC2005-应用程序正常初始化失败-0xc0150002

最近几天被这个问题困惑了许久。不禁感叹微软的东东真是越做越烂了,也终于明白了时隔12年大家仍然死守VC6的原因。。

用VC2005编译的程序,编译时没有任何错误,但是运行时就是提示“应用程序正常初始化失败”!!查找了各方面资料,做了各种尝试,网上说什么的都有:有让安装vc2005 sp1补丁的;有让安装vcredist_x86.exe的; 有让把CRT库的dll直接拷贝到程序目录的; 有让清理注册表的;有让装.NetFramework新版本的;有让查manifest的;

结果我尝试了半天,几乎都是浪费时间。上面最后一条说的还算正确,只是作者把事情描述得太繁琐了。。现在把处理的方法说一下,省得大家再走弯路:

1. VC2003、VC2005、VC2008及其后续版本,对底层最基本的CRT、MFC、ATL库都进行了重构,为了避免不同版本的库引起冲突,重构后的库文件一般放在C:\\windows\WinSxS 文件夹中,并用特定的文件夹\文件名称进行标识;

2. 与VC6不同, VC2003、VC2005、VC2008及其后续版本,引入了manifest 清单的概念,即应用程序编译后会同时生成对应的.manifest文件,并将该.manifest 文件作为资源编译到dll或者exe中去。.manifest文件实际上是一个XML格式的文本文件,里面记录了dll或exe中要引用的CRT、MFC、ATL库的版本和名称。VC6编译的应用程序对CRT、MFC、ATL的dll都是直接调用,而VC2003、VC2005、VC2008编译的程序都是先查询编译到资源中的manifest中的记录,然后按照记录提供的版本和名称去搜寻对应的CRT、MFC、ATL库以及随库发布的.manifest文件,搜寻的路径包括当前目录、C:\\windows\WinSxS 等等,如果没有找到对应的库文件,则提示“应用程序正常初始化失败”;

3.因此解决这个问题的办法就是:(a)用文本编辑器打开exe或dll对应的.manifest文件,查看它引用的CRT、MFC、ATL库的版本;或者,用UltraEdit 直接打开exe或者dll,从资源区中找到编译进去的.manifest信息,找到它引用的

CRT、MFC、ATL库的版本;或者,运行程序,当程序弹出“应用程序正常初始化失败”对话框时,在桌面上右键点击“我的电脑”-“管理”-“事件查看器”-“系统”,双击查看其中的记录,可以看到出错的原因是因为缺少了某某版本的CRT、MFC、ATL库,记录下这个版本信息;(b)记录到的库的版本信息一般类似于“Microsoft.VC90.DebugCRT”,之后到C:\\windows\WinSxS 或者VC200X的安装文件夹中搜索包含这个字符串的文件夹和文件,将搜索到的dll和.manifest文件都拷贝到应用程序所在的文件夹中,其中,.manifest文件必须重命名为“Microsoft.VC90.DebugCRT.manifest”(这里以Microsoft.VC90.DebugCRT为例),这样应用程序就可以正常运行了;(c)注意:库的.manifest文件和dll要一同拷贝到应用程序根目录去,因为应用程序会将编译到内部的manifest信息与外部的.manifest文件进行对比,之后才会对库的dll进行调用。如果只拷贝库的dll文件是没有用的;

4.如果本机编译和运行程序都ok,但是将编译好的程序拿到其它机器上确无法运行,则多半也是这个原因。另外,如果提示"应用程序配置不正确",大多也是因为上面所说的CRT、MFC、ATL库版本与应用程序不匹配导致的,可以如法炮制进行解决;

在网上找出了这些方法:

方法一:

在类似C:\Program Files\Microsoft Visual Studio 8\VC\redi

st\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:

msvcm80d.dll

msvcp80d.dll

msvcr80d.dll

Microsoft.VC80.DebugCRT.manifest

把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以正确运行了。

其他release版、MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!

方法二:

修改编译选项,将/MD或/MDd 改为/MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。

方法三:

工程-》属性-》配置属性-》常规-》MFC的使用,选择“在静态库中使用mfc”

这样生成的exe文件应该就可以在其他机器上跑了。

方法四:

你的vc8安装盘上找到再分发包vcredist_xxx.exe和你的程序捆绑安装

在大部分机上都可以运行了,唯独在我的测试机上还是报应用程序配置错误。刚开始怀疑是还缺少dll,在能跑的机上把windows/system32目录下所有的msvc*.dll都复制到这台机的运行目录,还是不行!极度郁闷※×…!后来实在没辙了,就在VC环境中打开了EXE来查看它内嵌的manifest资源,无奈了看了一会,带着心中对manifest的咒骂,突然发现这个manifest带了两个版本CRT的依赖:

再打开Microsoft.VC80.CRT.manifest一看,是这样:

就是说,我们EXE的Manifest里多了一个版本依赖,那就把后面那个依赖删除试试。于是就把工程设置的生成manifest的选项去掉,手工改了一下manifest放到程序目录下,发现果然可以运行了!

还有个问题没有明白,就是VC为什么在自 傻膍anifest里带了两个依赖呢,上网再查了

一下,发现在msdnonline上说'8.0.50608.0'这个版本是在XP下用的,'8.0.50727.762'这个版本是在Vista下用的(https://www.doczj.com/doc/0b915916.html,/en-us/library/ms235342(VS.80).aspx),可是我用的是'8.0.50727.762'在XP下运行的好好的!想不通是它错了还是别的原因。后来在CRT的源码里面搜索'8.0.50727.762',找到了~'8.0.50608.0'也在那里。

#if defined _USE_RTM_VERSION

#define _CRT_ASSEMBLY_VERSION “8.0.50608.0”

#else

#define _C RT_ASSEMBLY_VERSION “8.0.50727.762”

#endif

显然默认的版本是“8.0.50727.762”,除非定义了_USE_RTM_VERSION!那为什么我们的工程会生成两个版本的依赖呢,明明这个地方是二选一的。一开始怀疑是工程设置引起的,我就把我们的工程拷出来,把里面的文件删掉,再复制一些向导生成的文件进来,编译一看,manifest 里只有一个'8.0.50727.762',说明工程设置没有问题!最后我怀疑是工程链接的那些库的问题,因为有些库是用VC6或者VC2003编译的,但是有些库没有代码,编不了,没法尝试了。

VC++ 解决"应用程序配置不正确,程序无法启动"

2009-03-03 10:05

在使用VC++2005环境下生成的程序,放置到未安装VC环境的机器下后,有时候会出现程序无法执行的错误,其提示是:应用程序配置不正确,程序无法启动,重新安装应用程序可能解决问题。

实际上,重装是解决不了问题的,解决的一种方法是查看

*exe.intermediate.manifest文件,比如文件的内容是:

manifestVersion='1.0'>

publicKeyToken='1fc8b3b9a1e18e3b' />

publicKeyToken='1fc8b3b9a1e18e3b' />

version='8.0.50727.762' processorArchitecture='x86'

publicKeyToken='1fc8b3b9a1e18e3b' />

需要注意这个文件中的3个关键词:Microsoft.VC80.CRT,

Microsoft.VC80.MFC和Microsoft.VC80.DebugCRT。寻找到...."Program Files"Microsoft Visual Studio 8"VC"redist文件夹下面,找到这些名称的子文件夹,拷贝它们下面所有的文件到希望发布的EXE文件下面,一起打包。这些文件也就是mfc80.dll,msvcr80.dll,msvcp80.dll和

Microsoft.VC80.CRT.manifest等。此错误发生的原因是在目标机器上需要这些文件的支持。

Visual C++ Libraries

Visual C++ Libraries as Shared Side-by-Side Assemblies

In Visual C++ 2005, the ATL, MFC, Standard C++, and CRT libraries support the new deployment model available on Windows XP, Windows Server 2003, and Windows Vista. The DLLs corresponding to all Visual C++ libraries have been grouped into several shared side-by-side assemblies and are installed into the native assembly cache, also called the WinSxS folder, under the operating system root directory. Similarly, while building a C++ application using Visual C++ 2005, by default the compiler and the linker generate a manifest file that describes runtime dependencies of this application on Visual C++ libraries.

Visual C++ libraries cannot be used by a C/C++ application without a manifest binding the application to these libraries. If a C/C++ application that depends on a Visual C++ library does not use a manifest, then an attempt to load the Visual C++ library as a dependent DLL from the application-local folder will result in an error message indicating that this is an unsupported way of loading a Visual C++ library.

Note:

On versions of Windows that do not support deployment of shared

side-by-side assemblies, such as Windows 98 and Windows 2000 Server, the Visual C++ libraries are installed in the System32 folder and WinSxS folder under the operating system root directory. This setup enables running Visual C++ applications on these operating system versions because they do not support manifest-based binding of applications to

dependent DLLs. On these operating systems, when an application is loaded, the corresponding manifest file is ignored and the operating systems searches for dependent DLLs using paths set in the current running environment. However, on upgrading the operating system to a version that support manifest-based binding, such as Windows XP, Windows Server 2003, or Windows Vista, applications built with manifests start using the DLLs installed in the WinSxS folder.

This change to the deployment model of Visual C++ libraries prevents the problem of version conflicts between DLLs that occur when you add updates or configurations to a machine, and will allow support of side-by-side installation of two different Visual C++ toolsets. It will also allow you to produce reliable, self-describing applications and components that will not conflict with existing components. For more information on the advantages of new deployment model, please see Concepts of Isolated Applications and Side-by-side Assemblies. To learn about how this may impact deployment of existing native C++ applications, please refer to Redistributing Visual C++ Files.

Visual C++ libraries have been packaged in several shared side-by-side assemblies with corresponding manifest files.

Assembly Name DLLs included in

the assembly

Visual C++ Library

Microsoft.VC90.ATL atl90.dll Active Template Library

Microsoft.VC90.CRT msvcr90.dll

msvcp90.dll

msvcm90.dll

C Runtime Library,

release DLLs

Microsoft.VC90.DebugCRT msvcr90d.dll

msvcp90d.dll

msvcm90d.dll

C Runtime Library, debug

DLLs

Microsoft.VC90.MFC mfc90.dll

mfcm90.dll

mfc90u.dll

mfcm90u.dll

Microsoft Foundation

Classes, release DLLs

Microsoft.VC90.DebugMFC mfc90d.dll Microsoft Foundation

Classes, debug DLLs

mfcm90d.dll mfc90ud.dll mfcm90ud.dll

Microsoft.VC90.MFCLOC mfc90chs.dll

mfc90deu.dll

mfc90esp.dll

mfc90ita.dll

mfc90kor.dll

mfc90cht.dll

mfc90enu.dll

mfc90fra.dll

mfc90jpn.dll

Microsoft Foundation

Classes, localized

resources

Microsoft.VC90.OpenMP vcomp.dll OpenMP Library, release DLLs

Microsoft.VC90.DebugOpenMP Vcompd.dll OpenMP Library, debug DLLs

简单数据库查询语句

数据查询语言(SELECT语句) 数据操纵语言(INSERT, UPDATE, DELETE语句) 数据定义语言(如CREATE, DROP等语句) 数据控制语言(如COMMIT, ROLLBACK等语句 超详细的SQL语句语法2008-07-11 14:25简单的Transact-SQL查询只包括选择列表、FROM 子句和WHERE子句 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列 它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行, 默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行, 而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable 9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,

实验室制取气体的发生装置和收集装置的选择

实验室制取气体的发生装置和收集装置的选择 Document number:WTWYT-WYWY-BTGTT-YTTYU-2018GT

实验室制取气体的发生和收集装置 教学目的: 1、通过本节课的教学,使学生初步了解实验室制取气体的发生装置和收集装置以及所需要的仪器。 2、学生通过本节课的学习,能根据反应物的状态和反应条件以及气体的性质和用途选择发生装置和收集装置。 教学重点:根据条件选择发生和收集装置。 教学难点:几种特殊收集装置的使用。 教学手段:利用班班通通过PPT进行教学。 教学过程: 一、制取装置 1、固体加热制气体 所需仪器:铁架台、酒精灯、大试管、弹孔塞 注意事项:①试管口要略向下倾斜 ②若是固体直接生成气体,试管口要放一团棉花;若是固体先熔化再生成气体,则不需要棉花。 ③若是用排水法收集气体,实验结束时要先撤导气管再熄灭酒精灯。 2、液体或液体和固体加热制气体 所需仪器:铁架台、酒精灯、大试管 弹孔塞、圆底烧瓶、石棉网 注意事项:①前图适合制取少量气体;后图

适用于制取较多量气体。 2、固体和液体不需加热制气体 ①该装置的优点:结构简单,操作方便 缺点:不能制取较多量气体和得到连续不断的气流。 所需仪器:铁架台、大试管、弹孔塞 ②该装置的优点:能制取较大量气体,可以得到连续不断的气流。 缺点:不能控制反应速率。 所需仪器:长颈漏斗、锥形瓶、双孔塞 注意事项:长颈漏斗要伸到液面以下(液封) 改进装置:在长颈漏斗末端加一个小试管可以防止 剧烈反应时气体从长颈漏斗逸出。 ③该装置的优点:可以通过分液漏斗控制 液体滴加 速率控制反应速率。 缺点:不能控制反应的发生或停止。 所需仪器:分液漏斗、锥形瓶、双孔塞。 若无分液漏斗也可用注射器替代。 ④该装置的优点:可以通过弹簧夹控制反应的发生 或停止, 也可以制得较大量气体,同时可以得到连续不断的 气流。

VC2005-应用程序正常初始化失败-0xc0150002

最近几天被这个问题困惑了许久。不禁感叹微软的东东真是越做越烂了,也终于明白了时隔12年大家仍然死守VC6的原因。。 用VC2005编译的程序,编译时没有任何错误,但是运行时就是提示“应用程序正常初始化失败”!!查找了各方面资料,做了各种尝试,网上说什么的都有:有让安装vc2005 sp1补丁的;有让安装vcredist_x86.exe的; 有让把CRT库的dll直接拷贝到程序目录的; 有让清理注册表的;有让装.NetFramework新版本的;有让查manifest的; 结果我尝试了半天,几乎都是浪费时间。上面最后一条说的还算正确,只是作者把事情描述得太繁琐了。。现在把处理的方法说一下,省得大家再走弯路: 1. VC2003、VC2005、VC2008及其后续版本,对底层最基本的CRT、MFC、ATL库都进行了重构,为了避免不同版本的库引起冲突,重构后的库文件一般放在C:\\windows\WinSxS 文件夹中,并用特定的文件夹\文件名称进行标识; 2. 与VC6不同, VC2003、VC2005、VC2008及其后续版本,引入了manifest 清单的概念,即应用程序编译后会同时生成对应的.manifest文件,并将该.manifest 文件作为资源编译到dll或者exe中去。.manifest文件实际上是一个XML格式的文本文件,里面记录了dll或exe中要引用的CRT、MFC、ATL库的版本和名称。VC6编译的应用程序对CRT、MFC、ATL的dll都是直接调用,而VC2003、VC2005、VC2008编译的程序都是先查询编译到资源中的manifest中的记录,然后按照记录提供的版本和名称去搜寻对应的CRT、MFC、ATL库以及随库发布的.manifest文件,搜寻的路径包括当前目录、C:\\windows\WinSxS 等等,如果没有找到对应的库文件,则提示“应用程序正常初始化失败”; 3.因此解决这个问题的办法就是:(a)用文本编辑器打开exe或dll对应的.manifest文件,查看它引用的CRT、MFC、ATL库的版本;或者,用UltraEdit 直接打开exe或者dll,从资源区中找到编译进去的.manifest信息,找到它引用的

数据采集和监控(SCADA)系统

数据采集和监控(SCADA)系统 1概述 SCADA(Supervisory Control And Data Acquisition)系统即数据采集和监控系统,它是电网调度自动化系统的基础和核心,负责采集和处理电力系统运行中的各种实时和非实时数据,是电网调度中心各种应用软件主要的数据来源。SCADA系统包括实时数据采集、数据通信、SCADA系统支撑平台、前置子系统、后台子系统等。 数据采集包括反映物理过程特征的数据的产生,数据发送、接收和数据处理;监视控制不仅包括对物理过程的直接控制,还包括管理性控制,只下发调控指令,由厂站端或下级调度人工调控。通常数据采集装置和控制装置安放在厂站端,与主站端监控系统并不在一起,所以要实现数据采集和直接控制功能需要双向数据通信,一般认为数据采集是信号上行的通信,而直接控制是信号下行的通信。 一个SCADA系统通常由一个主站和多个子站(远方终端装置RTU或变电站综合自动化系统)组成。主站通常在调度控制中心(主站端),子站安装在变电站或发电厂(厂站端),主站通过远动通道或广域网实现与子站的通信,完成数据采集和监视控制。国分为五级调度,主站除接收子站信息,还以数据通信方式接受从下级调度控制中心主站转发来的信息,又向上级调度控制中心主站转发本站的信息。 厂站端是SCADA系统的实时数据源,又是进行控制的目的地。SCADA所采集的数据包括模拟量测量(又称为“遥测”),状态测点(又称为“遥信”)和脉冲累加量(又称为“遥脉”)。 SCADA系统的主站分为前置子系统和后台子系统,二者通过局域网相联相互进行通信。 前置子系统主要完成与厂站端及其它调度控制中心的通信,并将获得的数据发送给后台子系统。后台子系统进行数据处理。SCADA把这些最近扫描的已经处理的反映被监视系统状态的数据存储在数据库中。画面联结数据库,因而画面就直观地给出该系统状态的正确景象。 SCADA为每一个量测量赋予一个状态和记录数值的变化趋势,当设备处于不正常状态或运行限值已被超过时通知调度员。通过提供电力系统的当前状态及过去状态,调度员可对电力系统进行监视。调度员能对电力系统设备和SCADA系统本身进行控制,这使得调度员能使SCADA 系统适合于当前电网工况。调度员能够用人工值去替换远动数据,也可以发出命令给电力系统控制装置。

数据库基础操作语句

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar 类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

吉林省吉林市中考化学复习练习 常用气体的发生装置和收集装置与选取方法33 新人教版

常用气体的发生装置和收集装置与选取方法33 1、实验室选用如图所示装置制取气体,根据要求回答下列问题. (1)指出图中标号仪器的名称①② (2)用高锰酸钾制取氧气,其反应的化学方程式 为;用排水法收集时发现水槽中的水变成紫红色,其原因是.(3)装置B可用于实验室制取多种气体,能用此装置制取的气体 是(任写一种),该反应的化学方程式 为. (4)实验室制取某气体时,既可用C也可用E装置收集.由此推测该气体所具有的物理性质 是(填序号). a.该气体的密度大于空气 b.该气体难溶于水 c.该气体的密度小于空气. 2、某课外活动小组的同学用下列装置探究CO2的实验室制法。

(1)甲同学用大理石与稀盐酸反应制取CO2,应该选用的发生装置是,收集装置是发生反应的化学方程式 为;。 (2)加热固体碳酸氢钠或固体碳酸氢铵都能产生CO2,其方程式分别是:

乙同学利用加热碳酸氢钠的方法制取CO2,应该选用的发生装置 是。 他不选用碳酸氢铵制取CO2的理由 是 3、通过一年的化学学习,我们知道实验室中的组装仪器往往有多种用途。根据下图所示装置回答问题。 (1)图中A装置常用于制氧气,其反应的化学方程式是________________________;除制氧气外,A装置还能进行另一个实验是________________。 (2)若用B装置对氧气进行干燥,则装置内放入的药品是_____________。若在B装置中盛满水,用排水法收集(瓶口向上)一瓶氧气,气体从____端(填字母“a”、“b”)通入。 (3)某同学将实验室制得的二氧化碳通入装有澄清石灰水的B装置,始终未出现浑浊,原因可能是_________________(答一条即可)。 4、实验室选用下图所示装置制取和收集气体,根据要求回答下列问题。 (1)实验室用B装置制取氧气时,有关的化学反应方程 式:。

Visual Studio问题集锦by低调年华,未完待续

问题集锦 vs2013的安装需要网络接入,否则安装后部分功能无法使用! 1.error MSB: 3073,已退出,代码1 解决方法:项目属性,生成事件,后期生成事件,命令行(改为默认即可) 2.VS2010显示行号 解决方法:工具,选项,文本编辑器,C/C++,自动换行,行号。 3.error LNK 1120:无法解析的外部命令 解决方法:这个问题的原因是有头文件,但是找不到实现。 1)只包含了头文件,只有这个函数的声明,没有包含这个函数的实现(实现一般放在cpp 文件中的)。所以只能通过编译,连接不成功。 2)另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include该头文件的文件都会有一份该函数的实现,连接的时候,连接器不知道连接哪一个实现,于是报错。 4.error LNK 2019:无法解析的外部符号 原因:lib库可能无法匹配,更换lib库即可。 5.关于无法解析的外部命令的所有可能原因 考虑可能的原因 [0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib 包. [1]只写了类声明,但还没有写实现类,造成调用时无法解析 [2]声明和定义没有统一,造成链接不一致,无法解析 [3]没有在项目属性页的链接器的命令行选项加入相应的类包。 [4]没有在c++包含目录和库目录加入相应的类包路径

[5]在测试工程中被测文件目录可能需要包含被测类的cpp定义文件 [6]ICE接口测试时,无法解析可能因为被测文件没有包含进相关的cpp文件,另外,在TestSuite_ProjectRun.h文件中需要包含IProjectRun.h头文件,及相关的头文件(举例)。 [7]import相关的无法解析内容,解决办法是在链接器的依赖项中加入相应的动态库 [8]出现如下错误的原因一般是动态库没有包进来。__imp ProjectRun.obj : error LNK2019: 无法解析的外部符号__imp__StartHistoryLocalModule,该符号在函数"protected: virtual int __thiscall HiRTDB::CProjectRun::DoStart(void)" (?DoStart@CProjectRun@HiRTDB@@MAEHXZ) 中被引用 [9]error LNK2001: 无法解析的外部符号__imp___CrtDbgReportW 工程属性,C/C++,代码生成,运行时库选择MDd, [10]无法解析的外部符号"__declspec(dllimport) public: int __thiscall HiRTDB::CTagTree::GetObjectA(int,struct HiRTDB::SBaseReadProps const &,struct HiRTDB::SBaseReadValues &)" (__imp_?GetObjectA@CTagTree@HiRTDB@@QAEHHABUSBaseReadProps@2@AAUSBaseR eadValues@2@@Z),该符号在函数"public: int __thiscall HiRTDB::CStringImpl::Get(int,struct HiRTDB::SStringReadProps const &,struct HiRTDB::SStringReadValues &)" (?Get@CStringImpl@HiRTDB@@QAEHHABUSStringReadProps@2@AAUSStringReadValues @2@@Z) 中被引用 原因可能是工程配置文件中有多余选项,请参考其他模块的配置选项,不要有多余配置。6.参数basepath不能是相对路径 解决方法:basePath不能是相对路径,在项目->配置属性->调试->中,将命令和工作目录改为绝对路径。这里将其改为默认即可。 7.应用程序无法正常启动,(代码0xc0150002) 解决方法:缺少此应用程序所需动态库的VC++运行库,安装对应的VC++运行库即可。

嵌入式系统便携式数据采集装置设计

嵌入式系统便携式数据采集装置设计 摘要 随着计算机科学技术的飞速发展和普及,数据采集技术已经渗透到各个领域。例如:基于ARM和S1510开发的便携式RFID信息采集与处理系统、基于ARM7的二代身份证信息采集系统。小型射频存储芯片也越来越多的应用于我们的日常生活,像二代身份证、非接触式IC卡,ARM设计便携式数据采集装置鉴于其低功耗、低成本、便携以及强大的数据处理能力等优点,在便携式数据采集装置中应用的越来越多。 本设计借助于嵌入式系统设计技术和微处理器技术来实现的低功耗、大容量存储的便携式数据采集装置。利用嵌入式的开发平台对此在软件和硬件方面做出了详细的设计。

目录 1、前言 ............................................................................................ 错误!未定义书签。 2、嵌入式平台的构建 (3) 2.1、μC/OS-II嵌入式操作系统简介 (3) 2.2、MSP430系列介绍 (4) 2.3、μC/OS-II在MSP430F169上的移植 (4) 2.4、系统基本工作原理 (4) 3、硬件设计 (5) 4、电源设计 (5) 5、软件设计 ..................................................................................... 错误!未定义书签。 5.1、主程序设计 ........................................................................... 错误!未定义书签。 5.2、数据存储任务........................................................................ 错误!未定义书签。 5.3、UART通讯任务.................................................................... 错误!未定义书签。 6、总结 (8) 7、参考文献 (8)

Oracle数据库初始化参数更改的注意事项

一般只有在大型应用中或者数据据库性能明显下降时才需要修改这个初始化参数。所以从这个角度来讲,初始化参数的调整算是Oracle数据库中的一个高级应用。但是这也是一个Oracle数据库管理员必须要掌握的内容。为了更高的调整数据库的初始化参数,笔者认为管理员在了解各个初始化参数的用途以及调整规则之前,需要先了解一些初始化参数调整的一些共性的内容。具体来说,主要有以下几个方面。 一、需要了解哪些参数不用重新启动即可生效。 在Oracle数据库中,根据生效的时间不同,可以把参数大致分为两类。一类是必须重新启动后才能够修改或者生效的参数;另外一类就是修改后不用重新启动即生效的参数。一般来说,数据库管理员比较喜欢第二类参数,即修改后不需要重新启动立即生效的参数。为什么呢?因为数据库服务器投入生产使用之后,不能够随意重新启动。如果修改后需要重新启动才能够生效,或者需要重新启动后才能够修改参数,那么在调整参数的过程中显然需要中断用户的访问,会增加停机时间。这对于数据库部署来说,打击会非常的大。因为从稳定性与可用性出发,数据库管理员是以最小的停机时间为目标的。而此时人为的增加停机时间,显然跟这个目标有冲突。所以,数据库管理员就需要知道哪些参数是不用重新启动就可以修改与生效的;而哪些参数则必须重新启动才可以。这是数据库管理员再调整参数之前首先需要知道的内容。一方面管理员可以根据这个特性,来评估停机的损失与调整参数可能带来的收益。如果收益大于损失的话,那么仍然有调整初始化参数的必要。二是来确定参数调整的时间。哪些不需要重新启动,即调整参数不会导致停机的情况下,则参数的调整时间相对来说灵活一点,限制不多。但是如果需要调整重新启动才能够生效或者修改的参数,那么就需要选择一个合适的时机了。如需要选择晚上12点以后的时间,这个时段往往使用数据库的用户并不是很多。当然这个时间每个起夜都可能不同。总之就是选择一个使用数据库用户尽量少的时候。如此的话,才能够在最大程度上降低数据库停机造成的损失。 那么哪些参数不需用重新启动就可以被修改呢?其实,数据库管理员只需要查询动态视图,即可以知道哪些参数不用关闭或者重新启动就可以更改。如在动态视同v$parameter中,存储着初始化参数的值。一般来说,可以在查询语句中加入条件issys_modifiable<>’FALSE’ or isses_modifiable<>’FALSE’(注意他们之间是or的关系,而不是and关系),最后查询出来的参数就是不用关闭或者重新启动数据库就可以设置的初始化参数。同时这些参数也是可以利用ALTER SYSTEM与ALTER SESSION命令可以更改的部分初始化参数。也就是说,不用关闭或者重新启动数据库就可以修改的参数都可以使用上面两个命令来进行重新设置。但是并不是说,利用这两个命令都可以在不用重新启动或者关闭数据库的情况更改初始化参数。简单的说,就是可以利用这两个命令来更改的参数,有些需要重新启动或者关闭数据库,而有些则不用。 二、根据20/80原则来确定需要更改的参数。 Oracle数据库中的初始化参数有上百个。无论出于什么目的,去一一调整这些参数往往是不现实的。一个优秀的数据库管理员,只需要掌握其中少数几个参数的修改即可。往往掌握这几个参数的修改方法、原则以注意事项,就可以完成大部分的数据库维护任务。这就是20/80的规律在其作用。也就是说,只需要掌握20%的参数(其实还远远不到这个比例),就可以完成80%的任务(其实远远高于这个比例)。也就是说,10/90规则对这个Oracle初始化参数来说,可能更加的适用。总之笔者要说的就是,只需要掌握众多初始化参数中的少数几个即可。即使需要通过调整初始化参数来提高数据库性能或者其他目的的,也就是在这几个少数的初始化参数中。对于其他的参数,数据库管理员只需要了解其用途,而不需要了解该如何调整这些参数。因为遇到的几率可以说基本没有。 那么这些重要的参数到底有哪些呢?主要有以下几个参数。最重要的一个参数就是 DB_CACHE_SIZE。这是一个用来调整数据库缓存大小的参数。在必要的时候,调整这个参数的大小,可以提高数据缓存的命中率,从而大幅度的提高数据库的性能。第二个参数是DB_BLOCK_SIZE。这个参数主要是用来指定数据库在建立时所默认的块大小。如果块设置的比较小,则有可能会发生行链化现象,从而降低数据库的性能;也有可能增加数据库的碎片,浪费表空间的存储空间以及降低数据库的查询性能等等。所以根据需要有时候也要调整这个块大小来改善数据库的性能。第三个参数是SHARED_POOL_SIZE参数。这个参数主要是为那些数据字典缓存和共享SQL语句指定了在SGA里所分配的内存。简单的来说,合理配置这个参数,能够同等的共享SQL语句。调整这个参数,也是一种优化数据库性能的常用手段。第四个参数为SGA_MAX_SIZE参数,这个参数指定了SGA可以动态增长的最大内存。在SQLServer数据库中也有类似的参数。一般来说,在同台数据库服务器中若部署有多个应用服务的话,则往往需要合理配置这个参数来避免多个应用服务之间争用内存。如果这个参数设置的不合适的话,则有时候会导致另外一种应用服务由于没有足够的内存而停止服务。第五个参数为LOG_CHECKPOINT_INTERVAL。这个参数主要用来设置检查点的频率。在每个检查点中,数据库系统执行数

数据库(SQL)操作命令大全

下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ?%value1%? ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count * as totalcount from table1 求和:select sum(field1) as sumvalue from table1

中考化学复习练习常用气体的发生装置和收集装置与选取方法35

常用气体的发生装置和收集装置与选取方法35 1、.现有以下装置、仪器。请根据要求回答问题: (1)仪器①的名称是。 (2)图A是实验室用高锰酸钾制取氧气的装置,为使试管口略向下倾斜,应该调节的螺丝 是(选填“a”、“b”或“c”),装置改正后试管中发生反应的化学方程式 是。 (3)实验室用过氧化氢溶液分解制取O2,若要控制反应速率获得平稳气流,应选用(从A至D选填序号)作为气体发生装置。 (4)D装置作为制取CO2的发生装置时,可以随时控制的反应停止和发生。从E至H选 择(填序号)也可以组装成一个可随时使反应停止和发生的气体发生装置。(5)若用下图甲除去CO中的CO2,瓶中装入的试剂最好是(选填数字:①. 烧碱溶液②. 浓硫酸③. 澄清石灰水),气体从(选填“d”或“e”)通入。(6)下图乙装置中容器Ⅰ、Ⅱ都盛等体积CO2,分别用注射器向两个容器中注入等量的水和NaOH溶液,观察到现象,说明CO2能与NaOH溶液发生反应。

2、根据下列装置图填写有关空格: (1)仪器①的名称为;仪器②的名称 为。 (2)实验室制二氧化碳的发生装置可选用上述装置(填序号下同),收集装置可选用;实验室用氯酸钾和二氧化锰加热制氧气的方程式 是。 (3)除去粗盐中不溶性杂质的实验步骤是、过滤和蒸发结晶,用到的蒸发装置是,(填序号),还必须用下列玻璃仪器组合中的(填序号)才能完成实验。 ①漏斗、烧杯、玻璃棒②滴管、量筒、试管③集气瓶、表面皿、广口瓶(4)用氯化钠固体和水配制5%的氯化钠溶液,需要用到上图装置中的(填序号)。若配制过程中,在已经有少量水的烧杯中加入5g氯化钠和95mL水,其他操作均规范,则所得溶液中氯化钠的质量分数(填“>”或“<”,或“=”)5%。 3、下图是两套实验室制取气体的常用装置。 (1)制备CO2应选用的装置是(填编号),生成CO2的化学方程式 为。

iis7.5应用程序池模板永久性缓存初始化失败解决方法

错误:应用程序池“AppPoolName”的模板永久性缓存初始化失败,这是由以下原因所导致:无法创建应用程序池的磁盘缓存子目录。数据可能包含额外的错误代码 在一次重启IIS服务的过程中,突然无法启动IIS服务,打开Internet 信息服务(IIS)管理器也不显示站点,在系统日志中看到错误: =========================================== 来源:Active Server Pages 事件ID:5 错误:应用程序池“AppPoolName”的模板永久性缓存初始化失败,这是由以下原因所导致:无法创建应用程序池的磁盘缓存子目录。数据可能包含额外的错误代码: =========================================== 于是在网上搜索了一套堆资料,最后查到微软官方的解决方法如下:(此方法试过不行的用户注意最后的讲解) 手动设置文件夹的权限 1.单击“开始”,再单击“Windows 资源管理器”,双击“我的电脑”,再双击系统驱动 器(通常为驱动器C),然后双击“WINDOWS”或“WINNT”。 2.双击“Help”,双击“iisHelp”,右键单击“common”,然后单击“共享和安全”。 3.单击“安全”,然后单击“添加”,键入IIS_WPG,然后单击“确定”。 4.选中“IIS_WPG”,单击选中以下复选框,然后单击“确定”: o读取和执行 o列出文件夹内容 o读取 5.打开systemroot\system32\inetsrv\ASP Compiled Templates 文件夹的“共 享和安全”对话框,然后授予IIS_WPG 组“完全控制”权限。 6.对systemroot\IIS Temporary Compressed Files 文件夹重复步骤5。 要手动设置NT AUTHORITY\NETWORK SERVICE 的权限,请按照下列步骤操作: 1.单击“开始”,单击“运行”,键入%systemroot%\Help\iisHelp,然后单击“确定”。 2.右键单击“Common”文件夹,然后单击“共享和安全”。

ORACLE数据库管理初始化参数

管理初始化参数 管理初始化参数(调优的一个重要知识点,凭什么可以对数据库进行调优呢?是因为它可以对数据库的一些参数进行修改修正) 初始化参数用于设置实例或是数据库的特征。oracle9i提供了200多个初始化参数,并且每个初始化参数都有默认值。 显示初始化参数(1) show parameter命令 如何修改参数需要说明的如果你希望修改这些初始化的参数,可以到文件D:\oracle\admin\myoral\pfile\init.ora文件中去修改比如要修改实例的名字数据库(表)的逻辑备份与恢复 逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程,逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程。 物理备份即可在数据库open的状态下进行也可在关闭数据库后进行,但是逻辑备份和恢复只能在open的状态下进行。 导出导出具体的分为:导出表,导出方案,导出数据库三种方式。 导出使用exp命令来完成的,该命令常用的选项有: userid:用于指定执行导出操作的用户名,口令,连接字符串 tables:用于指定执行导出操作的表 owner:用于指定执行导出操作的方案 full=y:用于指定执行导出操作的数据库 inctype:用于指定执行导出操作的增量类型 rows:用于指定执行导出操作是否要导出表中的数据 file:用于指定导出文件名 导出表 1.导出自己的表exp userid=scott/tiger@myoral tables=(emp,dept) file=d:\e1.dmp 2.导出其它方案的表如果用户要导出其它方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表E:\oracle\ora92\bin>exp

气体发生装置与收集装置的选择专项练习

气体发生装置与收集装置的选择 一、现有A至E的仪器装置图: 1、图A与B都是气体的发生装置。在实验室里,装置A一般用于制取反应物状态为______________、反应条件为__________的气体;例如用过氧化氢溶液与二氧化锰混合制氧气,其反应方程式是。装置B 一般用于制取反应物状态为_____________、反应条件为______________的气体;例如加热高锰酸钾或氯酸钾与二氧化锰的混合物制氧气,其反应方程式分别是:,。 2、装置C、D、E都是用来收集气体的实验装置。用C收集气体的方法叫_________,此气体的物理性质是;如。用D收集气体的方法叫___ ;此气体的物理性质是;如。用E收集气体的方法叫_______ ___,此气体的物理性质是; 3、已知空气的平均相对分子质量为29。如果某气体相对分子质量大于29,则此气体的密度比空气的大,如;如果某气体相对分子质量小于29,则此气体的密度比空气的小,如。(选下列代号) ①H2②O2③H2S ④NH3⑤CH4⑥HCl ⑦SO2⑧CO2⑨NO2⑩N2 二、配套练习与应用: 1、实验室常用氯化铵(NH4Cl)晶体和熟石灰[Ca(OH)2]粉末混合加热来制取氨气(NH3),同时生成氯化钙固体和水。 (1)写出上述制取氨气反应的化学方程式:___________________________ (2)实验时应该选取上述(填写字母)________作为制取氨气的发生装置。根据上表提供的数据分析,实验时收集氨气应选用上述(填写字母)装置_____ _而不用装置_ ,其原因是_________________ _。 2、一氧化氮在常温下是一种难溶于水的气体,密度比空气略大,它能跟空气中的氧气反应,迅速生成二氧化氮,要收集一瓶一氧化氮气体,可用的方法是()

Informix数据库常用操作命令

Unix系统及数据库常用操作命令 oninit 数据库启动 onmode -ky 数据库关闭 onstat -l 查看逻辑日志使用情况 ontape -c 连续备份逻辑日志 onstat -g iof 查看每个chunk 的I/O 情况 onstat -g mem 查看数据库存的情况 onstat -d 查看数据库chunk 的使用情况 ontape -s -L 0 数据库0 级备份 dbimport -d -i

数据恢复(硬盘) dbexport -o 数据备份(硬盘) update staistics (high) (low) 数据库数据抽样统计 ontape -r 数据恢复(磁带) onstat -c 配置情况 onstat - 数据库状态信息 ps –ef |grep cmcld 查看MC/Service Guard 进程 cmviewcl 查看MC/Service Guard 运行情况 cmruncl [ f ] 启动群集 cmhaltcl [ -f ] 终止群集 cmrunnode node 启动群集中的一个结点 例:# cmrunnode HPK460-1 cmhaltnode mode 终止群集中的一个结点 例:# cmhaltnode HPK460-1 cmrunpkg -n node pkg 在节点node 上运行pkg 包 例:# cmrunpkg -n HPK460-1 pkg1 cmhaltpkg -n node pkg 在节点node 上终止运行pkg 包 例:# cmhaltpkg -n HPK460-1 pkg1 cmmodpkg -e -n node pkg 允许在节点node 上运行pkg 包 例:# cmmodpkg -e -n HPK460-1 pkg1 cmmodpkg -d -n node pkg 禁止在节点node 上运行pkg 包 例:# cmmodpkg -d -n HPK460-1 pkg1 cm 系列命令,均可附加参数“-v”,以冗余模式显示执行结果;参数“-f”表示强制执行而忽略错误警告。 vgdispaly [-v] vg_name 显示激活的卷组信息 例:# vgdispaly ;# vgdisplay /dev/vgo2 lvdisplay [-v] lv_path 显示激活的逻辑卷信息 例:# lvdisplay /dev/vg02/rootdbs vgchange -a y vg_name 激活卷组 例:# vgchange -a y /dev/vg02 vgchange -a e vg_name 以互斥方式激活卷组 例:# vgchange -a e /dev/vg02

数据库基本SQL语句大全

数据库基本SQL 语句大全 学会数据库是很实用D ??记录一些常用的sql 语句…有入门有提高 有见都没见过的…好全…收藏下… 其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好 事…以后数据方面的东西就不用在程序里搞喽?.而且程序与数据库只要 一个来回通讯就可以搞定所有数据的操作 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbn ame 3、说明:备份sql server ---创建 备份数据的device USE master EXEC sp_addumpdevice ‘ disk ‘ c: MyNwind_1.dat ---开始备份 BACKU P DATABASE pubs TO testBack 4、说明:创建新表 create table tab name(col1 type1 [not n ull] [p rimary key],col2 type2 [not null],..) 根据已有的表创建新表: A : create table tab_new like tab_old 使用旧表创建新表) B : create table tab_new as select col1,col2 5、说明:删除新表 drop table tab name ‘ testBack ??- from tab_old defi niti on only

6、说明:增加一个列 Alter table tab name add colu mn col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一 能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tab name add p rimary key(col) 说明:删除主键:Alter table tab name drop p rimary key(col) 8、说明:仓J建索弓丨:c reate [uniq ue] in dex idx name on tab name(col ….) 删除索引:drop in dex idx name 注:索引是不可更改的,想更改必须删除重新 建。 9、说明:创建视图:create view view name as select stateme nt 删除视图:drop view view name 10、说明:几个简单的基本的sql语句 选择: select * from tablel where 范围 插入: in sert into table1(field1,field2) values(value1,value2) 删除: delete from table1 where 范围 更新: up date table1 set field1=value1 where 范围 查找: select * from tablel where fieldi like '%vkee的语法很精 妙,查资料! 排序: select * from tablei order by field1,field2 [desc] 总数: select count as totalco unt from tablei 求和: select sum(fieldi) as sumvalue from tablei 平均: select avg(fieldi) as avgvalue from tablei 最大: select max(fieldi) as maxvalue from tablei

文本预览
相关文档 最新文档