NuSMV中为什么不能打开c输入文件名打开文件呢

第37卷第5期计算机科学Vol.37No.5一种;叶俊民谢茜金聪李明张振方(华中师范大学计算机科学;摘要提出了一种用模型检验技术对程序进行分析的方法;价的Kripke结构,用CTL公式描述待验证的源;ResearchonaFront2endTool;AbstractAmodelproposed.T;下面描述具体步骤;2.1将C/C++源代码转换成控制流图的等
第37卷 第5期计算机科学Vol.37No.5一种基于模型检验程序分析技术的前端工具研究
叶俊民 谢 茜 金 聪 李 明 张振方(华中师范大学计算机科学系 武汉430079)
摘 要 提出了一种用模型检验技术对程序进行分析的方法,其主要思想是将C/C++源代码转换为与控制流图等
价的Kripke结构,用CTL公式描述待验证的源程序性质,使用NuSMV模型检验工具实施具体的程序分析。基于这一思想,设计并实现了一个自动将C/C++源代码转换为NuSMV输入的工具。所做的实验验证表明,该方法能够有效地对程序进行分析。关键词 模型检验,程序分析,自动NuSMV输入工具中图法分类号 TP311   文献标识码 A 
ResearchonaFront2endToolforProgramYEJun2min XEIQian JINCong LIG(DepartmentofComputerScience430079,China)
Abstract Amodelproposed.ThemainstepsincludetranslatingC/C++sourcecodethattocontrolflowgraph,describingpropertiesofsourcecodeinCTLformulaandtheusingmodelcheckerNuSMV.Basedonthisidea,atoolwhichisusedtoautomatical2lytranslateC/+sourcecodeintoNuSMVinputwasdesignedandimplemented.Theexperimentsshowthatthisapproachisabletoanalyzetheprogrameffectively.Keywords Modelchecking,Programanalysis,AutomaticNuSMVinputtool 
下面描述具体步骤。
2.1 将C/C++源代码转换成控制流图的等价Kripke结构2.1.1 从源代码生成具有XML结构的AST
(1)分析GCC生成的中间形式的AST
在GCC(v4.3.2)中,使用编译参数2fdump2original2origi2nal(g++),可以生成后缀名为original的抽象语法树AST中间文件。首先分析original文件格式,得到如图1所示的AST中间文件结点实例。
@1function_decl
name:@2 mngl:@3srcp:sample.c:4
type:@4args:@5
目前,已经有学者提出了将模型检验技术应用到程序分析中以发现程序故障的思想[1,2]。我们在此基础上研究了基于模型检验思想的程序分析技术[5],其核心思想是结合
NuSMV工具,通过遍历待检测系统模型的状态空间来测试
该模型是否满足给定的性质。这一过程涉及对待检验系统进行形式化建模,使用时序逻辑公式描述期望的性质。本文将在文献[5]的基础上,研究基于模型检验程序分析技术的一种前端输入工具的实现。
      extern   body:@6
2 研究基础
在标记图、标记树、性质树、抽象语法树(AST)、控制流程图、Kripke结构及其流程图和查询语言等概念[5]的基础上提出的基于模型检验技术进行程序分析的原理是,首先用GCC分析源代码生成的AST中间文件,并将该中间文件转化为一种基于XML表示的AST;从XML形式的AST中导出
CFG;使用标记函数对AST和CFG进行标记,得到与控制流
图1 GCC的AST中间文件结点
(2)定义用于AST表示的XML框架
为了将中间形式的AST转换为XML格式,定义了表示
AST的XMLschema,具体如图2所示。
〈xs:elementname=“node”〉
〈xs:complexType〉
〈xs:attributename=“id”type=“xs:ID”use=“required”/〉〈xs:attributename=“isInCfg”type=“xs:bool”use=“re2
quired”/〉
图等价的Kripke结构。其次,用CTL公式描述程序应该满足的性质。最后,将有限状态模型和CTL公式描述的程序性质转化为NuSMV的输入并实现对程序的分析。
〈xs:sequence〉
〈xs:elementname=“type”type=“xs:string”
到稿日期: 返修日期:  本文受武汉大学计算机软件工程国家重点实验室开放基金项目(编号:SKLSE),湖北省自然科学基金(编号:2008CDB349),华中师范大学校基金(编号:2009A12),华中师范大学中央高校基本科研业务费项目(编号:CC2
NU09Y01009和CCNU09Y01013)资助。
叶俊民(1965-),男,博士,教授,主要研究兴趣是软件工程、高可信软件故障诊断,E2mail:jmye@mail.。
minOccurs=“0”maxOccurs=“1”/〉
〈xs:elementname=”label”type=”xs:string”
minOccurs=“0”maxOccurs=“unbounded”/〉
〈xs:elementname=“attr”type=“xs:attr”
minOccurs=“0”maxOccurs=“unbounded”/〉
〈/xs:sequence〉〈/xs:complexType〉〈/xs:element〉
〈xs:elementname=“edge”〉〈xs:complexType〉
〈xs:attributename=“id”type=“xs:ID”use=“optional”/〉〈xs:attributename=“from”type=“xs:IDREF”use=“re2
quired”/〉
〈xs:attributename=“to”type=“xs:IDREF”use=“required”/〉〈xs:attributename=“fromorder“type=“xs:string”use=“op2
tional”/〉
〈xs:attributename=“isdirected”type=“xs:bool”use=“option2
〈xs:attributename=“isInCfg”type=“xs:bool”use=“re2
quired”/〉〈xs:sequence〉
〈xs:elementname=“type”type=“xs:string”
minOccurs=”=“1”根据规则,基于XML形式的AST生成算法如图3所示。
  算法功能:生成基于XML形式的AST
输入:源代码
输出:基于自定义的XML结构的AST
调用GCC处理源代码文件,生成GCC的AST中间文件;
forGCC的AST中间文件的每一项记录doBegin
 1)如果是索引值,按照Rule1进行处理;
 2)如果是记录与其它记录相关的项,按照Rule2进行处理; 3)如果是记录中与其它记录不相关的项,按照Rule2进行处理;
保存处理后的内容至文件;
3 AST中间文件中的记录,。设GCC的AST中N个,则此算法的时间复杂度为O(N)。
2.1.2 通过XML形式的AST生成CFG
〈xs:elementname==”0”=“unbound2ed”/〈/xs:sequence〉〈/xs:complexType〉〈/xs:element〉
〈xs:elementname=“attr”〉〈xs:complexTypename=“xs:attr”〉
〈xs:attributename=“id”type=“xs:IDREF”use=“optional”/〉〈xs:attributename=“name”type=“xs:NMTOKEN”use=
“requried”/〉
〈xs:attributename=“kind”type=“xs:NMTOKEN”use=“op2
tional”/〉
控制流程图存储的是从XML形式的AST中抽出的与控制流和数据流相关的结点和边。因此,从XML形式的AST到控制流程图的转换算法可以简化为两步:(1)识别与控制流和数据流相关的结点;(2)标记被识别的结点为CFG结点。相关算法如图4所示。
  算法功能:生成CFG
输入:基于XML的AST输出:标识所有CFG结点
  初始化CFG结点性质的集合P;  forAST中的每一个结点nodedo    Begin
     ifnode的结点类型∈Pthen设置node的isInCfg属
性为”true”
〈xs:sequence〉
〈xs:elementname=”type”type=”xs:string”
minOccurs=“0”maxOccurs=”1”/〉
〈xs:elementname=“attr”type=“xs:attr”
minOccurs=“0”maxOccurs=“unbound2ed”/〉
〈/xs:sequence〉〈/xs:complexType〉〈/xs:element〉
图2 AST的XMLSchema
图4 CFG的生成算法
(3)生成XML形式的AST
现在定义生成XML形式的AST转换规则如下:
Rule1 如果是记录索引值,则每遇到一条新记录就建立一个新的node元素与之对应。其中,node元素的id属性记录索引值,node元素中的isCFG属性记录此结点是否是CFG结点,type子元素纪录此结点的语句类型,label子元素记录在此结点上成立的谓词。
Rule2 如果记录与其他记录有程序分析相关的项,则建立edge元素。其中,edge元素中的from性质记录边的起始结点索引,to性质记录目的结点的索引。
Rule3 如果记录中存在与其他记录不相关的项,则这些项由attr元素记录,作为node的子元素。
因为生成CFG文件的算法操作针对的是AST中的结点,所以其算法复杂度只与AST中结点的个数有关。设AST有N个结点,那么此算法的时间复杂度为O(N)。2.1.3 获得CFG的等价Kripke结构通过2.1.1节和2.1.2节得到的结点集合L和结点间的迁移关系集合E,可得到满足Kripke结构的控制流程图的另外3个元素,即原子命题集合AP、在结点上标记表达式类型的标记函数μL和在结点上标记是否满足的原子命题集合的标记函数μE。
为了表述待分析的程序性质,定义如表1所列的原子命题。
表1 原子命题
原子命题DeclxassignedxUsedx
含义声明变量x变量x赋值变量x的使用
mallocxFreexreferencedxdereferencedx
End指针x分配内存指针x释放内存声明引用x对指针x解引用
序模型和待分析的程序性质到NuSMV工具输入的转换规则。NuSMV工具的输入称为NuSMV输入,具体如下:给定一个C/C++程序f,本文将相应的Kripke结构CFG(Lf,Ef,APf,μf)转换成一个NuSMV模型,NuSMV
f=(varf,Δf,Deff,CTLf)。其中,在NuSMV中,varf是
标记函数μL可将识别如图1所示的结点类型的工作与生成AST结点的工作同时进行。标记函数μE标记是否满足原子命题集合有两步:(1)对每一个原子命题,查询所有满足此原子命题的结点;(2)在查询到的结点上标记此原子命题。
本文将用到的所有满足原子命题结点的查询表达式的定义如表2所列。
表2 查询表达式
DeclxAssignedx
Δf={(l,Succ(l))|l∈Lf,一个L上的枚举变量,l∈Lf。
)∈Ef}l};Deff={define(p)={l|μfSucc(l)={l′|(l,l′
(l)=p,l∈Σf};CTLf是CTL性质符合NuSMV语Lf}|p∈
法的语句集合。
Rule4 若li∈Lf,假设li的结点id是i,且1≤i≤n,则在NuSMV程序中定义varf为一个NuSMV的枚举变量。该枚举
变量的名字为location,其取值范围是{loc1,loc2,loc3,…,locn}。
Rule5 若(li,lm1),(li,lm2),…,(li,lmj)&Ef,则转换为NuSMVcase语句中的一部分,用location=loci:{locm1,locm2,…,,其含义为从loci
查询表达式
↓3Var_decl[x]
↓3Modif[Var_decl[x][attr=“lhs”]]∪Init[Var_
decl[x][attr=“lhs”]]↓3(Plus∪Minus∪Mult∪Postinc∪Preinc∪Post2
)[Var_decl[x]]∪↓3Modify[Vardec∪Predec∪…
_decl[x][attr=“rhs”]]↓3Modify[Var_decl[x][attr=“lhs”]([malloc][attr=”rhs”]]↓3Call[Var_decl[x∪][attr=][x]]
到1,locm2,…,中标记了此命题的位i1,,lp:
=location{loci,loci2,…,
}p,存在loci1,loci2,…,locin位置满足该原子命题。
MallocxFrreexReferencedxDereferencedx
Rule7 将CTL公式中的符号转换为NuSMV公式中的
对应符号。
为了实现上述相关过程,其核心就是将C/C++源代码自动转换为NuSMV输入。下面将论述这一过程。
3.1 NuSMV前端输入工具F2N的结构
CFG进行标记,然后将其转化为等价的
Kripke结构的算法,如图5所示。
  算法功能:将CFG转化为等价Kripke结构
输入:抽象语法树AST,控制流程图CFG,原子命题集合AP输出:标记了原子命题的CFG,即CFG的等价Kripke结构
Begin for每一个原子命题集合中分原子命题pdo  begin
   while(AST中结点没有处理完)do   查询满足p的结点   if(node(CFG)then在node上标记p;   else   begin    AST上回溯node的祖先nodeP,直到nodeP∈CFG;    在nodeP上标记p;   end  endwhileendend
图6为设计的F2N工具结构图。其中从Input层到接口层已由文献[5]实现;从接口层到Output层为本工具的主要实现目标。其中,枚举变量提取模块实现CFG中的Lf转换成NuSMV模型中的varf的过程;迁移关系提取模块实现CFG中的Ef转换成NuSMV模型中的Δf的过程;原子命题提取模块确定待检测的程序性质的原子命题p在CFG中标记的位置,并将其转换为NuSMV公式中的对应符号。
图5 将CFG转化为等价Kripke结构的算法
2.2 用CTL公式描述待检测的程序性质
本文定义的待分析的程序性质包括:(1)不存在未初始化
图6 F2N工具结构图
变量;(2)内存分配和释放配对;(3)不存在野指针;(4)不存在变量未使用。待分析的程序性质如表3所列。
表3 所有CTL公式描述的性质
不存在未初始化变量内存分配和释放配对不存在变量未使用AG(declx→A(?usedxUassignedx))
AG(mallocx→AFfreex)AG(declx→AFusedx)AG(freexAFdereferencedx)
3.2 工具所用数据结构设计
F2N工具定义了描述Kripke结构的CFG图,Node类的
对象结点的数据结构如下:
publicclassNode{
   privateS   privateList〈String〉   privateS
3 NuSMV前端输入工具的实现
为了使用NuSMV工具,本文采用文献[4]中设计的从程
上述数据结构表示中,no用于唯一标识Kripke结构
CFG中的Lf。若li∈Lf,li的结点id是i,则该结点的no
在数值上等于i。info用于标识对应的li中包含的原子命题
p,且p∈APf。next用于标识与结点li存在迁移关系的结点。
4intmain()5{
6 char3a;7 char3b;8
9 a=(char3)malloc(203sizeof(char));10b=(char3)malloc(203sizeof(char));11strcpy(a,&Hello,world.\n&);12printf(&%s&,a);13free(a);
14printf(&%c&,3a);15}
若li,lj∈Lf,li的结点id是i;lj的结点id是j,如果li,lj存
在迁移,相对li结点的Node中的next在数值上等于j。此外,设计时用到的其他数据结构包括用于记录NuSMV输入的枚举变量集合location(n)、用于记录结点迁移关系集合case(n)、用于记录ctl.txt文件中所有原子命题内容的集合ctl(n)以及标记每个原子命题p在CFG图中的位置的集合define(n)。
3.3 主要算法
NuSMV前端输入实现算法如图7所示。算法功能:实现NuSMV前端的输入输入:cfg.txt文件和ctl.txt文件输出:NuSMV工具的前端输入文件
Step1 初始化NuSMV的location(n),case(n),ctl(n)和define(n)集
图8 实验用程序sample.c
由GCC生成的AST中间文件如图9所示。
;;Functionintmain()(main);;enabledby2@4@5
2:type:@4name:@8name:@9srcp:sample.c:6algn:32
used:1size:@36sign:signed
algn:8min:@37
13vars:@5expr:@7algn:8type:@10
scpe:@11size:@12body:@6
Step2 扫描cfg.txt文件
 for对cfg.txt文件中每一个Node结点do begin
  if(Node.no不存在于location中)then将此Node.nocation中;
Step3 标识location for对locationloc(i)do begin
 while(Node.no=i)do获取i结点的   if(Node.next!=null)
   then将此Node.next加入到该结点的case(i)中;   else该结点的case(i)=1;//表示结束 end
Step4 扫描ctl.txt文件,通过正则表达式获取所有变量的原子命
integer_type
name:@35prec:8max:@38
图9 部分GCC的AST中间文件
依据图1所生成的基于XML的AST部分结果如图10所示。
〈?xmlversion=&1.0&?〉〈ast〉
〈nodeid=&1&isInCFG=&false&〉
〈typename=&statement_list&/〉
〈edgefrom=&1&to=&2&isInCFG=&false&〉〈typename=&state2
ment&/〉〈/edge〉
题,将其存入到集合ctl(n)中;
Step5 标识每个原子命题在CFG中的位置;
 for集合ctl(n)中每个原子命题ctl(i)do begin
   for每一个Node结点do
   中包含了原子命题ctl(i))
   then将Node.no加入到该原子命题对应的define(i)集合中;   else该结点的define(i)=0;//表示该原子命题没出现;
〈edgefrom=&1&to=&3&isInCFG=&false&〉〈typename=&state2
图7 NuSMV前端输入实现算法
ment&/〉〈/edge〉
〈nodeid=&6&isInCFG=&false&〉
〈typename=&statement_list&/〉
〈edgefrom=&6&to=&13&isInCFG=&false&〉〈typename=&state2
ment&/〉〈/edge〉
本生成算法是针对cfg.txt文件和ctl.txt文件进行的操作,其算法复杂度与cfg.txt文件的中记录的条数和ctl.txt文件中原子命题的个数有关。本文cfg.txt文件中记录的条数在数值上等于CFG图中的Ef,即边的个数。假设记录的条数为N,原子命题的个数为M,那么此算法的时间复杂度为O(N(M+2))。
〈edgefrom=&6&to=&20&isInCFG=&false&〉〈typename=&state2
ment&/〉〈/edge〉
4 实例分析
本文使用的例子程序如图8所示。
  1#include〈stdio.h〉
2#include〈stdlib.h〉3#include〈string.h〉
……〈/node〉
图10 基于XML的AST部分结果
有了基于XML的AST,就可以从该AST中识别出CFG
结点,可视结果如图11所示。
运行“生成NuSMV文件”或点击“NuSMV”按钮后,可以将以上3个过程提取的内容合并成NuSMV输入,运行后结果如图15和图16所示。
图11 识别出的CFG结点
依据第3节介绍的将Kripke结构CFG图转换为文本格
式的cfg.txt文件中的内容,结合定义的CFG图中结点的数据结构表示,将图9中的Kripke结构CFG图转换为图12。
initstate:5no32333
infodecl_adecl_b
assigned_a,malloc_aassigned_b,malloc_bused_aused_afree_aindirect_a
E图12 转换后的cfg.txt :{loc5,loc58,loc28,loc29,loc30,loc31,loc32,loc33,loc3};
init(location):=loc5;
结合C/C++,
不存在未初始化变量内存分配和释放配对不存在变量未使用不存在野指针
AG(decla→A(?usedaUassigneda))AG(decla→A(?usedbUassignedb))
AG(malloca→AFfreea)
AG(mallocb→AFfreeb)AG(decla→AFuseda)AG(declb→AFusedb)AG(freea→?AFdereferenceda)AG
(free→?AFdereferenced)
 next(location):=
  location=loc5:{loc58};  ……
  location=loc33:{loc3);  1  :
 decl_a:=locationin{loc5}; used_a:=locationin{loc30,loc31}; malloc_a:=locationin{loc28}; free_a:=locationin{loc32}; indirect_a:=locationin{loc33}; ……
SPECAG(decl_a-&A[!used_aUassigned_a])SPECAG(decl_b-&A[!used_bUassigned_b])
中第2列的CTL公式单独提出,生成文本格式的
ctl.txt文件。
依照第3节定义的转换规则,结合NuSMV输入实现算法,设计了NuSMV前端输入工具,如图13所示。
图16 转换后的NuSMV前端输入
运行上面的NuSMV程序得到的程序性质分析结论如图
17所示。实验表明这个程序有3个错误:1)内存分配和释放不配对;2)存在变量未使用;3)存在使用野指针。
22specificationAG(decl_a-&A[!used_aUassigned_a])istrue22specificationAG(decl_b-&A[!used_bUassigned_b])istrue22specificationAG(malloc_a-&AFfree_a)istrue22specificationAG(malloc_b-&AFfree_b)isfalse
NuSMV前端输入工具
22specificationAG(decl_a-&AFused_a)istrue22specificationAG(decl_b-&AFused_b)isfalse22specificationAG(free_a-&!(AFindirect_a))isfalse22specificationAG(free_b-&!(AFindirect_b))istrue
图17 NuSMV检测例子程序的所有性质的结果
结束语 本文介绍了基于模型检验进行软件分析的方法,
图14 提取功能运行结果
分别运行3个提取功能过程后的结果如图14所示。
并将其应用于实际程序,验证了方法的正确性。本方法的输
(下转第174页)   
三亿文库包含各类专业文献、专业论文、各类资格考试、外语学习资料、行业资料、中学教育、文学作品欣赏、高等教育、54一种基于模型检验程序分析技术的前端工具研究_图文等内容。 
 基于PHP的在线跨站脚本检测工具_计算机软件及应用_IT/计算机_专业资料。龙源期刊...PHP 是一种 Web 程序语言,能够快速地解析前端 DOM 内容,在脚本语言中速度...  恶意程序分析检测技术,主要研究和分析了静态分析技术...ASESD 提供了一种基于 android 权限系统无标度的...3.掌握使用 android 应用程序的逆向工具 apktool 和...  了一些主要的软件分析技 术,以及部分相关分析工具。...一个程序是否符合需求规约需要分析技术,想了解程序...代表性技术有模型检验、定理证明、约束求解、抽象解释...  基于数据挖掘技术的软件缺陷检测方法研究_计算机软件及...程序语义分析方法是静态分析常用的一种分析技术。它...最新的静态分析工具将数据挖掘技术(通常是频繁子图...  龙源期刊网 .cn 基于软件体系结构分析的漏洞挖掘技术研究 作者:唐萍 张国强 来源:《现代电子技术》2016 年第 09 期 摘要: 为了提高漏洞...  作业技术活动结果检验程序为( )。 A.输入→转换→产出B.实测→分析→判断→纠正或认可C.实测→判断→分析→纠正或认可D.旁站→量测→分析→判断→认可或纠正 ...  作业技术活动结果检验程序为( )。 A.输入→转换→产出B.实测→分析→判断→纠正或认可C.实测→判断→分析→纠正或认可D.旁站→量测→分析→判断→认可或纠正 ...  基于模型的测试、基于故障注入的测试、模糊测试、基于...安全研究人员发现一种新的攻击时, 静态分析工具可以...的技术和过程, 切片技术可以抽取出程序中与 被检测...  或者对相关的工具、类库 以及框架非常熟悉,如 ...同时,前端人员培养的较少,一个原因是对 前端了解太...会影响到开发的速度,同时,也不利于后期技术 的研究...您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
智能家居中的安全防范系统本科毕业设计论文分解.doc 81页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:350 &&
你可能关注的文档:
··········
··········
毕业设计(论文)智能家居中的安全防范系统设计院(系)名称 电气工程学院
专业名称 自动化
指导教师 崔连延教授
日 摘要随着经济的快速增长,快节奏的生活状态使得人们越来越注重生活的质量和品位。如何建立一个高效率、低成本的智能家居系统已成为当今世界的一个热点问题。目前,国内外各种类型的智能家居产品越来越多,其中大部分是基于电话网的安防控制系统。但在我国,家庭电话用户正逐步减少,且电话线路易被破坏,故此类产品有一定局限性。随着电信GSM网络覆盖范围的广阔化、无缝化、以及手机的日益普及为基于GSM网络的智能家居系统提供了巨大的应用空间。本文设计了一种基于GSM网络的智能家居控制系统。本系统采用单片机为系统控制核心,对家庭中出现的意外情况用各种传感器进行采集,通过GSM模块把采集到的信息发送给管理人员,管理员根据收到的信息发送相关指令给GSM模块来控制现场执行机构,完成意外情况的排除。关键词:智能家居;GSM模块;传感器;远程控制AbstractWiththerapideconomicgrowth,fast-pacedlivingconditionsmakepeoplemoreemphasisonthequalityandtasteoflife.Howtobuildahigh-efficiency,low-costsmarthomesystemhasbecomeahotissueintoday'sworld.Currently,varioustypesofsmarthomeproductsathomeandabroadmoreandmore,mostofwhicharebasedontelephonenetworksecuritycontrolsystem.ButinChina,homephoneusersisgraduallyreduced,andthetelephonelinessusceptibletodamage,sotheseproductshavesomelimitations.WithTelecomGSMnetworkcoverageofabroad,seamless,andthegrowingpopularityofmobilephonesoffersgreatuseofspace-basedsmarthomesystemGSMnetwork.Inthispaper,thedesignofintelligenthomecontrolsystembasedonGSMnetworks.ThesystemusesSTCmicrocontrollerasthecoresystemcontrolforunexpectedsituationsthatappearinthefamilycollectionwithavarietyofsensors,viaGSMmodulesendsthecollectedinformationtomanagers,administratorssendcommandstotheGSMmoduleinaccordancewiththerelevantinformationreceivedactuatortocontrolthescenecompleteexclusionofunforeseencircumstances.Keywords:GSMremotecontrol目录第1章绪论 11.1研究目的和意义 11.2国内外发展情况 21.3发展趋势 41.4存在问题 5第2章系统方案 72.1.系统实现的目标 72.2.系统的功能和结构 72.2.1主机结构与功能 72.2.2从机结构与功能 8第3章系统硬件设计 93.1硬件电路设计 93.2系统控制器模块的选择 93.2.1单片机最小系统的设计 93.2.2单片机晶振电路 113.2.3单片机复位电路 113.3单片机电源电路的设计 123.4键盘电路的设计 133.5热释电红外传感器电路设计 143.5.1热释电红外线原理和特性 143.5.2热释电红外传感器RE200B的简介 143.5.3热释电红外传感器电路的设计 153.6烟雾检测模块 173.6.1烟雾传感器NIS-09C的介绍 173.6.2烟雾传感器电路设计方案 183.7可燃气体泄漏传感器及其特性参数 193.8声光报警模块 203.9显示模块 213.10通信模块 213.10.1TC35模块简介 213.10.2TC35模块与系统主机连接方式 223.11NRFCC1100无线收发模块 233.11.1模块性能及特点 233.11.2接口电路 243.11.3模块结构和引脚说明 253.12信号处
正在加载中,请稍后...电脑教程子分类02:24 提问
error LNK1181: 无法打开输入文件“opencv_ml2410d.lib”怎么解决
在vs2013下配置opencv2.4.10,配置好后一直报错error LNK1181: 无法打开输入文件“opencv_ml2410d.lib”,我确定在附加依赖项里有这个文件。
按赞数排序
检查一下:
1、你的操作系统是64位?
2、按32位配置的?
3、看你是Win32调试版,有可能是配置不对。
如果是按照64位配置的,就把vc里的平台由W32改为x64
debug模式使用带d的lib库,release使用不带d或带r的lib库
然后配置好lib的路径
解决了,,,lib路径没配置好!(撒了。。。。
其他相似问题在安装软件时遇到不能打开要写入的文件时如何解决
作者:佚名
字体:[ ] 来源:互联网 时间:01-13 09:34:20
在安装软件时偶尔会出现不能打开要写入的文件,导致软件无法完成安装,面对此问题,很多朋友都束手无策,不知道如何解决,经分析导致该问题的主要原因可能是软件问题或者系统问题
  电脑在安装软件时偶尔会出现不能打开要写入的文件,导致软件无法完成安装,错误提示一般为不能打开要写入的文件某某软件要求放弃,您可以选择&重新尝试写入或重试&,但不管选择哪像,软件依然无法完成安装,遇到该问题,很多朋友都束手无策,不知道如何解决。经过笔者研究发现,导致该问题的主要原因可能是软件问题或者系统问题,您可以尝试以下方法解决:
  一:首先排除病毒干扰
  使用最新版本杀毒软件对电脑进行全盘扫描,检查是否存在病毒破坏文件与系统的情况,一般该问题可能是病毒,如果未发现病毒,进行如下操作:
  二:检查下载的软件是否完整
  如果您下载的软件不全,或者经过他人修改,导致部分文件丢失,也将出现安装失败,建议大家重新去官网下载所需软件重新安装,另外如果电脑软件以前就旧版本,则可能是受保护了,建议卸载该软件的旧版本,再安装即可。
  三:检查软件所在文件夹管理员是否有写入权限:方法是找到需要安装的软件文件夹,右键选择属性,然后在安全选项下,查看管理员账户是否有写入权限。
  四:部分用户反馈,某些城程序安装到C盘会提示不能打开要写入的文件错误,但安装在其他盘则可正常。应该大家也可以尝试一下。
  五:当确认软件没问题,并且以上问题基本排除,那么则可能是电脑系统问题,建议您系统还原或者重新安装系统。
  不能打开要写入的文件错误,其实生活中也很少见到,当遇到该问题,不妨参考下以上一些解决办法,希望对大家有所帮助,如果您还有疑问或者希望帮忙补充,欢迎联系我们。
大家感兴趣的内容
12345678910
最近更新的内容}

我要回帖

更多关于 无法打开输入文件.obj 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信