LEX YACC与VC6.0连接配置以及简单示例

合集下载

vc++60中开发驱动程序的配置方法

vc++60中开发驱动程序的配置方法

VC++6.0中开发驱动程序的配置方法注意:如果你的电脑中没有安装VC++6.0等软件的话,请先安装 VC++ 6.0 ,再安装DDK,最后安装DriverStudio。

安装顺序一定不要搞错哟。

一、首先创建一个你的驱动工程文件目录。

这个目录下用来放置你的各个驱动工程文件夹。

(比如我在D盘创建了一个D:\PCI9052DVP\PCI9052DRV文件夹作为我的驱动工程文件目录)。

二、然后添加1个用户环境变量,DDKROOT,他的值应该是你所安装DDK的根目录。

(比如在安装DDK时安装到了E:\WINDDK\3790.1830,那么 DDKROOT的值应该为E:\WINDDK\3790.1830)。

添加用户环境变量后电脑需要重启。

如果没有这个用户环境变量,将不会编译任何一个文件。

三、编写一个MakeDrvr.bat批处理文件,如下(可直接copy,不用修改)。

MakeDrvr.bat应该放在工程目录下面D:\PCI9052DVP\PCI9052DRV。

@echo offif "%1"=="" goto usageif "%3"=="" goto usageif not exist %1\bin\setenv.bat goto usagecall %1\bin\setenv %1 %4%2cd %3build -b -w %5 %6 %7 %8 %9goto exit:usageecho usage MakeDrvr DDK_dir Driver_Drive Driver_Dir free/checked [build_options]echo eg MakeDrvr %%DDKROOT%% F: %%WDMWorkshop%% free -cef:exit四、建立一个Makefile工程下面我将要建立一个PCI9052DRV的工程。

(参考资料)VC++6.0安装教程

(参考资料)VC++6.0安装教程

VC++6.0 安装教程1、首先下载软件安装压缩包“VC++.rar”2、选中该压缩包,点右键,解压缩到当前文件夹(需提前安装好解压缩软件,如:winrar)3、双击打开解压后的文件夹“c++”4、在该文件夹的根目录找到“SETUP.exe”,双击运行(无视“简体中文版”那个文件夹)5、系统提示有兼容性问题,选中左下角“不再显示此消息”,再点击“运行程序”(后同)6、点击“next”继续7、选中“I accept the agreement”,点击“next”继续8、ID全部填1,填满为止;“Your name”和“Your company's name”随意,然后点击“next”继续9、点击“next”继续10、同上,勾选左下角的“不再显示此消息”,再点击“运行程序”11、同上,勾选左下角的“不再显示此消息”,再点击“运行程序”12、点击“确定”后重启电脑,记得先保存未完成的其他文件13、重启后出现如下窗口,点击“next”继续14、再点击“next”继续15、同上,勾选左下角的“不再显示此消息”,再点击“运行程序”16、点击“continue”进入下一步17、点击“ok”确认18、软件会搜寻系统是否已经安装了VC++,接下来出现此界面19、先点击右边的“Select All”,然后取消左边列表中的“Microsoft Visual Basic 6.0”和“Microsoft Visual FoxPro 6.0”前面的勾(除非你需要用到这2个软件),再点击“continue”继续20、在“Register Environment Variables”前打勾后,点“OK”继续21、点“Yes”继续22、取消2个选项前面的勾,不让其访问网络,再点击右下角的“取消”继续24、保存当前的文件后,点击“Restart Windows”重启电脑25、重启后,取消“Install MSDN”前面的勾(除非你提前下载了MSDN),点击“Next”继续27、点击“Next”继续28、点击“Next”继续29、取消“Register Now”前面的勾,点击“Next”继续30、安装结束,现在可以在开始菜单看到“Microsoft Visual Studio 6.0”的菜单31、打开“Microsoft Visual Studio 6.0”,系统继续提示兼容性问题,勾选左下角的“不再显示此消息”,点击“运行程序”32、去掉左下角“Show tips at startup”前面的勾(除非你每次打开VC++的时候想查看这些Tips),再点击“Close”继续33、打开“File”(文件)菜单,选择“New”(新建)34、在默认的“Projects”选项卡中,选择倒数第三项:“Win32 Console Application”,再右上角填上新建程序的名字,然后点击“ok”确定35、点击“Finsh”继续36、点击“OK”继续37、再打开“File”菜单,选择“New”,这次默认是“Files”选项卡,选择“C++ Source File”,勾选右上角的“Add to project”,在File文件名中,输入新建源文件的名字,注意须以“.c”结尾,如“1.c”,然后点击“ok”,即可在中间的区域开始源程序的编辑38、写好程序,点快捷栏的“编译”图标39、依然勾选左下角的“不再显示此问题”,再点击“运行程序”,以后都不会再出现此类兼容性问题的提示了40、点击快捷栏的“链接”图标,生成可执行程序41、点击快捷栏的“运行”图标,运行程序42、程序运行成功,现在可以删除解压缩的“c++”文件夹。

vc6.0配置及使用教程

vc6.0配置及使用教程

步骤是:(先工程—后文件—编译—连接---运行)1,建立一个工程,“文件”——“新建”,出现下面界面:选择“Win32 Console Application”(控制台应用程序,左边倒数第三个),命名工程名称,选择保存位置,点击“确定”,进入下一步,看到如下提示界面:建立一个空工程,对应其他需要的你一可以建立别的工程;点击“完成”,之后:显示你创建的工程的信息。

2,再在有一个的工程的条件下,我们再建立一个源文件;“文件”——“新建”(快捷键Ctri+N),出现:建立源文件,选择“C++ Source ”,一般都是建立这种文件的(适用在当文件中适用)如果要建立头文件的话,选择“C/C++ Header File”,(适用在多文件工程中使用)命名,文件名称,点击“确定”,之后:进入编辑区,在主界面编写代码:如下编写完之后呢:可以按编译按钮调试程序,看看有没有错误,有的话改正,没有的话就可以再按连接按钮检查连接(多文件工程时常用,检查文件间是否正常连接),最后,点运行按钮,就可以运行了。

如果是您有代码如:cpp文件,或 .h 文件,想添加都VC6.0里来测试的话,可以这样做:首先,要理解一下文件扩展名为:cpp和.h文件扩张名是.h,代表的是头文件,一般是书写一些函数原型,以及一些在整个程序中常用到的结构体,频繁使用的函数说明,定义等等;文件扩张名为,cpp的,是C++中的源文件,也是最常用到的文件,每建立一个工程都要至少一个源文件(至少要有一个函数入口——主函数main() ),包含了核心代码;建立与运行说明:(以VC 6.0编译器为例,其他编译器类似)首先,打开VC 6.0编译环境;在菜单栏——文件(的下拉菜单中选择“新建”),在弹出的选择窗口中,选择Win32 Console Application(控制台应用程序),在填写工程名称,选择一个程序保存路径,点击“完成”,查看工程信息。

在点击“确定”,就建立一个简单的工程了。

LEX和YACC的使用(例子)

LEX和YACC的使用(例子)

LEX和YACC的使⽤(例⼦)1、简单C语⾔的词法分析程序;%{#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>%}digit [0-9]letter [A-Za-z]other_char [!-@\[-~]id ({letter}|[_])({letter}|{digit}|[_])*string {({letter}|{digit}|{other_char})+}int_num {digit}+%%[ |\t|\n]+ "auto"|"double"|"int"|"struct"|"break"|"else"|"long"|"switch"|"case"|"enum"|"register"|"typedef"|"char"|"extern"|"return"|"union"|"const"|"float"|"short"|"unsigned"|"continue"|"for"|"signed"|"void"|"default"|"go \"([!-~])*\" {printf("CONST_string,%s\n",yytext);}-?{int_num}[.]{int_num}?([E][+|-]?{int_num})? {printf("CONST_real,%s\n",yytext);}"0x"?{int_num} {printf("CONST_int,%s\n",yytext);}","|";"|"("|")"|"{"|"}"|"["|"]"|"->"|"."|"!"|"~"|"++"|"--"|"*"|"&"|"sizeof"|"/"|"%"|"+"|"-"|">"|"<"|">="|"<="|"=="|"!="|"&"|"^"|"|"|"&"|"||"|"+="|"-="|"*="|"/="|"%="|">>="|"<<="|"&="|"^="|"|="|"=" {printf("%s,NULL\n",yytext);}{id} {printf("ID,%s\n",yytext);}{digit}({letter})+ {printf("error1:%s\n",yytext);}%%#include <ctype.h>Upper(char *s,int l){int i;for(i=0;i<l;i++){s[i]=toupper(s[i]);}}yywrap(){return 1;}注意:要得到输出信息,需要⾃⾏添加main函数,lex默认的main函数没有输出的。

VC6.0如何创建以及调用动态链接库实例详解

VC6.0如何创建以及调用动态链接库实例详解

VC6.0如何创建以及调⽤动态链接库实例详解⼩弟在公司的职责,在上篇博客中已经简约介绍。

这边博客主要介绍技术的应⽤⽽不在细究原理。

因为公司项⽬着急,出结果要紧,并且咱也不是专注搞研究的,所以,基本懂了原理后,直接上⼿⼯作,搞出demo来最好。

⾄于公司⼯作情况,今天暂且略过,当然也不是⼀两句能够表达清楚的。

后⾯会有相应的⼯作总结,敬请期待……现在,废话少说,直奔主题——VC6.0中创建动态链接库。

作为客户与后台的中介,为了更好的调节两⽅的关系,我明智滴选择了webservice以及动态链接库。

在与客户c++使动态链接库⽅式,⽽与后台java,使⽤webservice来交流沟通。

既然有了动态链接库,肯定⼤家会想到静态链接库。

呵呵,这个是相对的。

那这两者有什么区别呢?那⼜为静态链接库:是把lib⽂件也打包到了exe⽂件中。

动态链接库:没有把lib⽂件打包到exe⽂件中,若是使⽤,则直接加载卸载相应的dll⽂件。

并且,静态链接库中不允许包含静态链接库和动态链接库,⽽动态链接库中是允许包含静态链接库和动态链接库的。

因为⼩弟封装的dll中是调⽤客户的dll,并且有可能包含另外⾃⼰的动态链接库。

鉴于此,⼩弟选择了动态链接库。

还有⼀点是,动态链接库,也是分为三种情况的。

⼀是⾮MFC的dll(也就是控制台的dll),⼆是常规的MFC的dll(其中⼜分静态的dl和共享的dll),三是扩展的MFC 的dll。

并且MFC的dll可以被MFC程序或者控制台程序调⽤。

因为⼩弟封装的dll,需要供MFC程序调⽤,所以选择使⽤了MFC常规的dll。

并且使⽤控制台程序做测试。

⾸先,在新建⼯程中选择MFC AppWizard (dll)然后在头.h⽂件中,声明被外界调⽤的函数复制代码代码如下:extern "C" _declspec(dllexport) char* queryFunctionByFID(char* funcId);声明后,在cpp⽂件中,实现此函数。

编译器的自动生成工具LEX和YACC的使用方法

编译器的自动生成工具LEX和YACC的使用方法

编译器的自动生成工具LEX和YACC的使用方法一、词法分析程序产生器LEX的用法1.1 Lex概述Lex是一个词法分析器(扫描器)的自动产生系统,它的示意图如图1.1。

Lex源程序是用一种面向问题的语言写成的。

这个语言的核心是正规表达式,用它描述输入串的词法结构。

在这个语言中用户还可以描述当某一个词形被识别出来时要完成的动作,例如在高级语言的词法分析器中,当识别出一个关键字时,它应该向语法分析器返回该关键字的内部编码。

Lex并不是一个完整的语言,它只是某种高级语言(称为lex的宿主语言)的扩充,因此lex 没有为描述动作设计新的语言,而是借助其宿主语言来描述动作。

我们只介绍C作为lex的宿主语言时的使用方法,在Unix系统中,FORTRAN语言的一种改进形式Ratfor也可以做lex的宿主语言。

图1.1 Lex示意图Lex自动地表示把输入串词法结构的正规式及相应的动作转换成一个宿主语言的程序,即词法分析程序,它有一个固定的名字yylex,在这里yylex是一个C语言的程序。

yylex将识别出输入串中的词形,并且在识别出某词形时完成指定的动作。

看一个简单的例子:写一个lex源程序,将输入串中的小写字母转换成相应的大写字母。

程序如下:%%[a-z] printf(“%c”,yytext[0]+'A'-'a');上述程序中的第一行%%是一个分界符,表示识别规则的开始。

第二行就是识别规则。

左边是识别小写字母的正规式。

右边就是识别出小写字母时采取的动作:将小写字母转换成相应的大写字母。

Lex的工作原理是将源程序中的正规式转换成相应的确定有限自动机,而相应的动作则插入到yylex中适当的地方,控制流由该确定有限自动机的解释器掌握,对于不同的源程序,这个解释器是相同的。

1.2 lex源程序的格式lex源程序的一般格式是:{辅助定义的部分}%%{识别规则部分}%%{用户子程序部分}其中用花括号起来的各部分都不是必须有的。

使用lex与yacc构建简单计算器

使用lex与yacc构建简单计算器

使用lex与yacc构建简单计算器最近从本科时候的资料中翻到了编译原理的资料,翻到了部分lex 与yacc学习的资料和部分程序,后来又模仿老师给我们的例子程序写了一个简单的计算器,供初学者参考,也作为自己的一个学习笔记。

关于lex现在常用的是GNU的Flex,主页是/,其中有相关文档,以及程序源代码。

在 Windows下一版可以直接下载Flex.exe,lex主要是一个词法分析器他只要通过正则对字符串进行分析,生成一系列逻辑单元,通常被称为记号(token),lex的主要工作就是将字符串分解为token串,每个token代表特定的意义。

Yacc是一个LALR(1)的语法分析器,通过与lex相结合,就可以完成比较复杂的功能。

已实现的功能:带括号的整数加减乘除运算。

代码 scan.l[cpp]view plaincopy1.%{2.#include<string.h>3.#include "y.tab.h"4.extern int yylval;5.%}6.numbers ([0-9])+7.plus "+"8.minus "-"9.times "*"10.divide "/"11.lp "("12.rp ")"13.delim [ /n/t]14.ws {delim}*15.%%16.{numbers} {17.sscanf(yytext, "%d", &yylval);18.return INTEGER;19.}20.{plus} {return PLUS;}21.{minus} {return MINUS;}22.{times} {return TIMES;}23.{divide} {return DIVIDE;}24.{lp} {return LP;}25.{rp} {return RP;}26.{ws} ;27.. {printf("Error");exit(1);}28.%%Calcs.y[cpp]view plaincopy1.%{2.#include <stdio.h>3.#include "lex.yy.c"4.#define YYSTYPE int5.%}6.%token INTEGER PLUS MINUS TIMES DIVIDE LP RP7.%%mand : exp {printf("%d/n",$1);}9.exp: exp PLUS term {$$ = $1 + $3;}10.|exp MINUS term {$$ = $1 - $3;}11.|term {$$ = $1;}12.;13.term : term TIMES factor {$$ = $1 * $3;}14.|term DIVIDE factor {$$ = $1/$3;}15.|factor {$$ = $1;}16.;17.factor : INTEGER {$$ = $1;}18.| LP exp RP {$$ = $2;}19.;20.%%21.int main()22.{23.return yyparse();24.}25.void yyerror(char* s)26.{27.fprintf(stderr,"%s",s);28.}29.int yywrap()30.{31.return 1;32.}编译[cpp]view plaincopy1.flex scan.l2.yacc calc.y3.gcc -o mycalc.exe y.tab.c4.mycalc.exe <text1.txt5.pause其中lex 与 yacc 程序需要放在环境变量中的PATH下,gcc 可以换成其他的编译器,按照以上操作,一个简单的计算器就完成了。

配置VC6.0 和opencv成功

配置VC6.0 和opencv成功

共四步骤。
1、安装vc6.0
2、安装opencv.exe 默认安装在C盘 opencv add环境变量一定要勾选。
3、配置:vc6.0
新建一个hello world win32 Console Application工程,
点击 工具——选项——目录 :
(1)可执行文件下添加C:\PROGRAM FILES\OPENCV\BIN
3、test1_lwb是测试是否成功的。
4、把 C:\Program Files\OpenCV\bin 这个安装目录里面的所有dll文件全部拷贝到 C:\WINDOWS\system32 这个目录里。这样就大功告成啦!!!!
以下不用了。如果上面配置有问opencv_1.0
2、看本目录里视频《opencv安装wmv》,详细配置opencv和vc6.0(看前十分钟就可以配置VC6.0,11分钟后 是配置VS2005了)
(2)include files下面添加
C:\PROGRAM FILES\OPENCV\CV\INCLUDE
C:\PROGRAM FILES\OPENCV\CVAUX\INCLUDE
C:\PROGRAM FILES\OPENCV\CXCORE\INCLUDE
C:\PROGRAM FILES\OPENCV\ML\INCLUDE
工程——设置——连接(里面的 对象/库模块) 是否包含以下内容:(如果不包含,就自己添加进去)
cv.lib cxcore.lib highgui.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

VC++6.0_使用方法(图片解析,非常好懂)

VC++6.0_使用方法(图片解析,非常好懂)

第一部分C语言编程环境简介第1章计算机程序设计实验的一般步骤1.1 计算机程序设计实验的目的C语言程序设计是一门实践性很强的课程,该课程的学习有其自身的特点,学习者必须通过大量的编程训练,在实践中掌握程序设计语言,培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法。

具体的说,通过上机实践,应该达到以下几点要求:1.使学习者能很好地掌握一种程序设计开发环境的基本操作方法(例如(Visual C++6.0),掌握应用程序开发的一般步骤。

2.在程序设计和调试程序的过程中,可以帮助学习者进一步理解教材中各章节的主要知识点,特别是一些语法规则的理解和运用,程序设计中的常用算法和构造及应用,也就是所谓“在编程中学习编程”。

3.通过上机实践,提高程序分析、程序设计和程序调试的能力。

程序调试是一个程序员最基本的技能,不会调试程序的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。

通过不断的积累经验,摸索各种比较常用的技巧,可以提高编程的效率和程序代码的质量。

下面介绍计算机程序设计实验的一般步骤:1.2 计算机程序设计实验的准备上机前需要做好如下准备工作,以提高上机编程的效率。

(1)在计算机上安装一种程序设计开发工具,并学会基本的操作方法。

(2)复习与本次实验相关的教学内容和主要知识点。

(3)准备好编程题程序流程图和全部源程序代码,并且先进行人工检查。

(4)对程序中有疑问的地方做出标记,充分估计程序运行中可能出现的问题,以便在程序调试过程中给予关注。

(5)准备好运行和调试程序所需的数据。

1.3 计算机程序设计实验的步骤(1)运行程序设计开发工具,进入程序设计开发环境。

(2)新建一个文件,输入准备好的程序。

(3)不要立即进行编译和连接,应该首先仔细检查刚刚输入的程序,如有错误及时改正,保存文件后再进行编译和连接。

(4)如果在编译和连接的过程中发现错误,根据系统的提示找出出错语句的位置和原因,改正后再进行编译和连接。

vc6.0下载、安装、及环境变量配置

vc6.0下载、安装、及环境变量配置

vc6.0下载、安装、及环境变量配置Vc6.0下载地址/softdown/program/VC60sp6chs.rar粘贴到迅雷或者旋风中的新建任务中vc6.0的安装过程1.首先解压安装文件的压缩包,镜像iso文件可以用winrar解压;2.然后再选择安装的版本,VC6CN 表示的是中文版,VC6EN表示英文版。

3.打开VC6CN文件夹,其中有如下图标,鼠标双击。

4.如下图所示就是我们安装的第一步,单击下一步。

5.选择“接受协议”后单击下一步。

6.本软件属于破解版,故无需输入产品ID号码,直接单击下一步。

7.选择“安装visual c++6.0中文企业版(I)”,这就是我们要安装的程序,单击下一步。

8.安装位置自己改,单击下一步。

9.如下界面,单击“继续”,开始安装软件。

10.点击“确定”。

11.选择“是”,继续安装。

12.选择“typical”继续安装13.选择“ok”。

14.选择“确定”15.选择“确定”16.取消“安装MSDN”前面的勾号,选择“退出”。

17.选择“是”,取消MSDN的安装。

18.程序安装完毕,再电脑的“开始菜单”中,选择“所有程序”,在“Microsoft Visual C++ 6.0”目录中选择“Microsoft Visual C++ 6.0”就可以运行程序了。

也可以将这个图标发送到桌面快捷方式,这样就可以直接在桌面上运行程序。

配置环境变量想用CMD直接编译连接cpp形成exe文件,就像配置好jre后直接在DOS里运行java程序一样。

1、首先配置环境变量:在path中添加D:/Program Files(x86)/Microsoft Visual Studio /VC98/bin;D是我的VC的安装盘,你可以根据自己前边安装路径的修改但是现在在CMD里输入cl ***.cpp时,DOS里提示连CL的命令都不存在,原来在刚才路径的文件夹里少了一个文件mspdb60.dll为了证明这一点,可以点击X:/Program Files/Microsoft Visual Studio /VC98/bin 中的cl.exe,它会提示你缺少mspdb60.dll文件,建议重新安装。

vc++6.0下Oracle环境配置

vc++6.0下Oracle环境配置

vc++proc设置要点:Oracle主目录在C:\oracle\product\10.2.0下(因机器安装而异)让vc++6.0支持proc编译工具有两种方法(两种任选其一即可使用proc)第一种是:配置本地工程环境优点:proc环境不会因环境变化而变化。

方便工程随身携带首先:C:\oracle\product\10.2.0\db_2\precomp目录下然后:打开工程然后在project->Settings->Link->Category->Input里的Object/library modules追加库名类似orasql10.lib再然后:打开工程然后在project->Settings->Link->Category->Preporcessort里追加头文件夹的路径public第二种方法:配置全局工程路径优点:配置一次全局生效,所有工程文件都会自动去找oracle目录首先:tools->Directories->下的Show directories for:include files下添加Proc的public所在完整路径然后:tools->Directories->下的Show directories for : Library files下添加Proc的Lib 所在完整路径编辑pc文件编译命令当编译proc程序是,需要用pc文件生成cpp文件,设置如下在commands里添加命令:proc config=$(InputDir)/oracle.cfg iname=$(InputDir)/$(InputName) oname=$(InputDir)/db.cpp(需要Oracle文件在工程当前目录下,否则config=要写明实际位置)然后是编辑oracle.cfg文件:code=cppltype=shortsqlcheck=fulluserid=scott/tiger@orclchar_map=string基本照抄,修改一下用户名和密码付:powerdesigner 调整生成脚本不加双引号database->edit current DBMS->script- >sql->format->CaSesensitivityUsingQuote下的value选择为no多线程支持配置:首先:修改oracle.cfg配置文件然后。

COM 组件设计与应用(十五)——连接点(vc6.0)

COM 组件设计与应用(十五)——连接点(vc6.0)

COM 组件设计与应用(十五)——连接点(vc6.0)一、前言上回书介绍了回调接口,在此基础上,我们理解连接点就容易多了。

二、原理图一、连接点组件原理图。

左侧为客户端,右侧为服务端(组件对象)看着好复杂呀......呵呵,其实简单的紧:(注1)1、一个 COM 组件,允许有多个连接点对象(IConnectionPoint)。

也就是说可以有多个发生“事件”的源头。

上图就有3个连接点;2、管理这些连接点的接口叫“连接点容器”(IConnectionPointContainer)。

连接点容器接口特别简单,因为只有2个函数,一个是 FindConnectionPoint(),表示查找你想要的连接点;另一个是 EnumConnectionPoints(),表示列出所有的连接点,然后你去选择使用哪个。

在实际的应用中,查找法使用最多,占90%,而枚举法使用只占 10%,一般在支持第三方的插件(Plug in)时才使用。

(你想写个 IE 的插件吗?我们后面就要讲到啦)3、每一个连接点,可以被多个客户端的接收器(Sink)连接;这个我们已经熟悉啦,还记得我们在上回书中为了管理多个回调接口,使用了 cookie 的方式进行区别吗?!三、实现组件(一)1、建立一个工作区(WorkSpace)2、在工作区中,建立一个 ATL 工程(Project)。

示例程序中工程名称叫 Simple15,接受全部默认选项。

3、ClassView 中,执行鼠标右键菜单命令 New Atl Object...,添加 ALT 类。

4、左侧分类 Category 选择 Objects,右侧 Objects 选择 SimpleObject(其实就是默认项目)。

5、名称 Name 卡片中,输入组件名称。

示例程序中是 DispConnect。

6、属性 Attributes 卡片中,接口类型选 Dual 双接口。

注意一定要选择 Support Connection Points 来支持连接点。

vc 6.0 SOCKET 通信 最最简单实例

vc 6.0 SOCKET 通信 最最简单实例

vc 6.0 SOCKET 通信最最简单实例vc++ 6.0分别建立Win32 Console Application类型的应用程序Server_Console和Client_console。

选择Project>Setting,在Link选项卡的Objecct/library modules框中加上库wsock32.lib。

在mian函数的前面,#include"stdafx.h"的后面,加上#include <winsock.h>。

服务器端程序代码:// TcpServer.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <stdio.h>#include <winsock.h>int main(int argc, char* argv[]){WORD wVersion;WSADATA wsaData;int err;wVersion = MAKEWORD(1,1);//初始化Windows Socketserr = WSAStartup(wVersion,&wsaData);if(err != 0){return 0;}//建立流式套接字SOCKET listenSocket = socket(AF_INET,SOCK_STREAM,0);sockaddr_in addr;int nSockErr;addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addr.sin_family = AF_INET;//设定监听端口5001addr.sin_port=htons(5001);//绑定套接字if(bind(listenSocket,(struct sockaddr*)&addr,sizeof(addr)) == SOCKET_ERROR)nSockErr = WSAGetLastError();//将套接字设置成监听状态if(listen(listenSocket,5) == SOCKET_ERROR)nSockErr = WSAGetLastError();printf("服务器正在监听...\n");//等待客户的链接请求SOCKET connectSocket = accept(listenSocket,NULL,NULL);if(connectSocket == INVALID_SOCKET){printf("接受错误...\n");nSockErr = WSAGetLastError();}else{//有客户链接请求被成功接收char buf[1024];memset(buf,0,sizeof(char)*1024);//接收客户端传输过来的数据int n = recv(connectSocket,buf,1024,MSG_PEEK);if(n>0)printf("服务器已经接受%d个字符:%s\n",n,buf);}//关闭套接字::closesocket(listenSocket);::closesocket(connectSocket);::WSACleanup();return 1;}客户端程序代码:// TcpClient.cpp : Defines the entry point for the console application. //#include "stdafx.h"#include <stdio.h>#include <winsock.h>int main(int argc, char* argv[]){WORD wVersion;WSADATA wsaData;int err;wVersion = MAKEWORD(1,1);//初始化Windows Socketserr = WSAStartup(wVersion,&wsaData);if(err != 0){return 0;}//创建流式套接字SOCKET connectSocket = ::socket(AF_INET,SOCK_STREAM,0);sockaddr_in servAddr;servAddr.sin_family = AF_INET;//设置服务器端主机的地址和端口号,这里的服务器是本地的servAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); servAddr.sin_port=htons(5001);if(connect(connectSocket,(struct sockaddr*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR)printf("连接错误\n");else{//连接成功,向服务器端发送数据::send(connectSocket,"xu chu liang -- twt thi plm",20,MSG_DONTROUTE); }//关闭套接字closesocket(connectSocket);WSACleanup();return 1;}。

在VC++6.0中使用ODBC连接数据库

在VC++6.0中使用ODBC连接数据库

在VC++6.0中使用ODBC连接数据库(一)一、建立数据源进入控制面板,点击【管理工具】,进入管理工具后点击【数据源(ODBC)】打开如图1的窗口,从图中的【用户DSN】可以看到我们自己添加的数据源如ClassAffairManageDSN、DataDSN等。

图1 ODBC数据源管理器在【用户DSN】标签页的右上方有三个按钮,分别是【添加(D)…】、【删除(R)】、【配置(C)…】,对应功能分别如下:【添加(D)…】:添加用户自定义新的数据源。

【删除(R)】:选择某个数据源后,点击它可以删除选中的数据源。

【配置(C)…】:选择某个数据源后,点击它可与对选中的数据源重新配置。

点击【添加(D)…】,弹出创建新数据源的窗口,进入创建新数据源的向导,如图2所示图2 创建新数据源列表框中显示的是在自己的电脑上安装的所有ODBC数据源驱动。

以创建SQL Server2000中的Northwind数据库的数据源为例,选择SQL Server数据库的驱动器,点击【完成】弹出“创建的SQL Server 的新数据源”窗口,在“名称”对应的编辑框中输入新创建的数据源的名称“NorthwindDSN”,“描述”可写可不写,“服务器”填写数据源所在的服务器,如果在本机创建则可输入“(local)”。

如图3所示。

图3 创建新数据源第一步:设置数据源名称和服务器点击【下一步】进入下一步的设置中,如图4所示:图4可以根据需要修改这一页的设置,这里选择默认设置,点击【下一步】进入下一步设置如图5所示。

图 5勾选上“更改默认的数据库为:”复选框,选择新数据源链接的数据库为Northwind,设置后如图6所示。

图 6点击【下一步】,进入如下页面:图 7点击【完成】可以看到新创建的数据源的配置信息如下图。

图 8点击【测试数据源(T)…】,弹出如图9窗口时表示新数据源创建成功。

图 9 测试数据源点击【确定】回到原来的窗口,再点【确定】完成新数据源的创建工作,在“ODBC数据源管理器”的“用户DSN”标签页中看到我们新建的数据源,如图10所示。

Win7下lex_与_yacc的安装配置

Win7下lex_与_yacc的安装配置

Win7下lex_与_yacc的安装配置Win7下lex 与yacc的安装配置一、如何在windows下安装lex。

首先,下载下载flex和bison。

安装时,设定路径最好不要是在Program Files文件夹里面,因为文件夹名字带空格会影响以后的使用。

可如此:安装在c:\gnuwin32下面。

其次,由于我们使用的flex和bison都是GNU的工具,所以为了方便,采用的C/C++编译器也采用GNU的编译器GCC,目前Windows平台的GCC主要是MinGW编译器。

安装过程中,会自动开启控制台,仅需稍等片刻,任其自动完成。

安装完毕后,将c:\gnuwin32\lib里面的libfl.a和liby.a复制到C:\MinGW\lib里面。

再者,设置环境变量。

现在该安装的都已安装完毕,那么我们该设置环境变量了。

右键点击“计算机”,“属性”、“高级系统设置”、“环境变量”,在下面系统变量里面找到PATH,修改,在后面加上c:\gnuwin32\bin和C:\MinGW\bin。

注意每一个路径是用分号分隔的,然后写第一个路径,然后分号,第二个路径。

如果你的安装的目录和我不一样,就对应修改。

开始两个简单的文件来测试安装是否成功。

1) 新建文本文件,更改名称为lex.l,敲入下面代码%{int yywrap(void);%}%%%%int yywrap(void){return 1;}2) 新建文本文件,更改名称为yacc.y,敲入下面代码%{void yyerror(const char *s);%}%%program:;%%void yyerror(const char *s){}int main(){yyparse();return 0;}打开控制台,进入到刚才所建立文件(lex.l,yacc.y)所在的文件夹。

输入flex lex.l输入bison yacc.y如果看到当前文件夹上多了两个文件(yacc.tab.c,lex.yy.c),那么说明lexyacc已经安装配置成功。

VC6.0对OPENCV的配置详解

VC6.0对OPENCV的配置详解

VC6下安装与配置OpenCV1.01.安装Visual C++6.02.安装OpenCV3.配置Windows环境变量检查C:\Program Files\OpenCV\bin是否已经被加入到环境变量PATH,如果没有,请加入。

4.配置Visual C++6.0全局设置菜单Tools->Options->Directories:先设置lib路径,选择Library files,在下方填入路径:C:\Program Files\OpenCV\lib然后选择include files,在下方填入路径:C:\Program Files\OpenCV\cxcore\includeC:\Program Files\OpenCV\cv\includeC:\Program Files\OpenCV\cvaux\includeC:\Program Files\OpenCV\ml\includeC:\Program Files\OpenCV\otherlibs\highguiC:\Program Files\OpenCV\otherlibs\cvcam\include然后选择source files,在下方填入路径:C:\Program Files\OpenCV\cv\srcC:\Program Files\OpenCV\cxcore\srcC:\Program Files\OpenCV\cvaux\srcC:\Program Files\OpenCV\otherlibs\highguiC:\Program Files\OpenCV\otherlibs\cvcam\src\windows最后点击“ok”,完成设置。

项目设置每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。

菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib如果你不需要这么多lib,你可以只添加你需要的lib。

VC++6.0与松下PLC通讯实例

VC++6.0与松下PLC通讯实例

VC++6.0与松下PLC通讯实例在我们介绍松下PLC通讯之前,先来了解一下串口模拟软件,以方便我们在没有PLC的情况下模拟通讯过程,方便调试。

Computer Link 计算机链接MEWTOCOL-COM特点1. 用于程序处理和交互式操作.2. 数据传输采用ASCII 码的形式.3. 首先由计算机发送指令.4. 由PLC 对指令自动进行相应响应.基本描述指令格式指令信息应答信息 (正常时):应答信息 (发生错误时):指令一览表触点和数据代码1.触点代码2. 数据代码错误代码关于校验码BCC(H)(L)① 校验码是将指令中的各个ASCII 字符的16进制(00~FF)进行异或求和后生成的. 该校验码也以两个ASCII 码表示.例) % 01 # RC S X 0000 1D <CR>② 如果在校验码处写入”**”, 则表示忽略校验码.求和BCC(H) = “1” (31H) BCC(L) = “D ” (44H)6. 按字单位读取触点状态(指令代码:RCC )指令应答 读取正常读取错误说明:触点代码与单触点读取相同 触点数据顺序 字③1. 写入单触点状态(指令代码: WCS )指令应答读取正常读取错误说明:字符"$"表示正常的应答.触点数据9.读取数据寄存器值(指令代码:RD )指令应答 读取正常读取错误说明:数据 (4 字符) D举例说明指令及其应答的具体情况Reading from the Data Area(RD读取指令)计算机主机读取PLC内容。

程序示例:读取PLC的DT1105至DT1107的数据。

假定DT1105至DT1107 的数据为以下数值:DT1105 = 0063HDT1106 = 3344HDT1107 = 000AH计算机主机的指令显示如下:%01RD57CR起始码 DT1105 DT1107 BCC 终止符PLC的应答显示如下:%01$RD630044330A0062CR 起始码目标码指令名称 DT1105数据 DT1106数据 DT1107数据 BCC 终止符说明:“$”表示正常应答。

vc++6.0实例讲解-教程(入门篇)

vc++6.0实例讲解-教程(入门篇)

vc++6.0实例讲解-教程(入门篇)1.打开vc++6.0建立一个工作区间,然后file->new->projects->Win32 Dynamic-Link Library->空dll2.添加一个c++头文件名为EF.h,代码如下:#ifdef EF_EXPORTS#define EF_API __declspec(dllexport)#else#define EF_API __declspec(dllimport)#endif#includeEF_API void func1(void);extern EF_API int all;class EF_API Dllprac{private:int a;public:Dllprac():a(5){}void show();}; //条件编译保证源文件使用的输出文件形式为__declspec(dllexport),客户端文件使用的是__declspec(dllimport)3.添加一个c++源文件名为EF.cpp#ifndef EF_EXPORTS//条件编译保证了EF_EXPORTS避免重复编译#define EF_EXPORTS#endif#include "EF.h"#includeusing namespace std;EF_API int all = 6;EF_API void func1(void){cout<<"all"<<all<<endl;}< p=""> void Dllprac::show(){cout<<"a"<<a<<endl;}< p="">BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;}4.新建一个控制台项目添加一个源文件client.cpp#include "EF.h"#includeusing namespace std;//注意路径,加载 dll的另一种方法是 Project | setting | link 设置里#pragma comment(lib,"EF.lib")int main(){cout<<"call dll"<<endl;< p="">cout<<"call function in dll"<<endl;< p="">func1();Dllprac dllp;dllp.show();exit(0);return 0;int i;cin>>i;}5.project->setting->link->subsystem:windows改为subsystem:console</endl;<></endl;<></a<<endl;}<></all<<endl;}<>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作者:QQ271353531一,Parser Generator 安装这里所用到的Parser Generator工具实际上是将YACC和LEX在windows的成功移植后的产物。

这个工具使用Y ACC和LEX能够生成Visual C++,Borland C++,Other C/C++以及相关Java代码。

下面介绍一下这个工具是如何生成代码并使用Visual C++编译的。

(可以在/downloads.htm下载Parser Generator)下载之后,解压缩,然后安装。

在安装了Parser Generator后,执行以下步骤,即可使VC++编译和链接由Parser Generator 产生的文件。

下边是关于编程环境配置的详细步骤:1,启动Parser Generator2,点击菜单中的Project选项,在子菜单中选择3,打开LibBuilder 选项窗口4,点击Properties选项,按照下图进行配置Script file name \Cpp\Script\msvc32.lbsName Visual C++(32-bit)Directory msvc32Compiler Version Version 6Unicode TrueTreat wchar_t as Built-in Type FalseCompiler Bin Directory 安装路径\Microsoft Visual Studio\Vc98\binCompiler Bin Directory(2) 安装路径\Microsoft Visual Studio\Common\MSDev98\bin Compiler Include Directory 安装路径\Microsoft Visual Studio\Vc98\include Compiler Include Directory(2) 无Compiler Library Directory 安装路径\Microsoft Visual Studio \Vc98\lib注:安装路径为相应VC 6.0安装目录5,配置好路径后,需要建立库文件,点击LibBuilder 选项窗口中的built 键注:整个过程需要持续几分钟,成功之后会自动停止。

6,建立Parser Generator工程文件(根据相应的需要进行选择)(1)Project->ParserWizard;(2)工程设定(一点需要注意语言可以选择C或是C++或java);(3)工程设定(默认创建带main函数的YACC文件和LEX文件);(4)YACC文件设定;(5)LEX文件设定;(6)编辑好代码后Project->RebBuild All,在你创建好的工程下自动生成第一步选定的语言文件。

二,VC 6.0配置示意网上的VC6.0配置大多不详细,而且配置很容易出错,此处以一个单独的LEX文件为例子来配置VC6.0.1,新建Parser Generator 点击project --> new2,填写工程名字随意取一个名字点击OK3,点击Project选项下的parserwizard 分析器向导选项这里需要填写工程存放的目录,以及工程名字。

4,选择配置这里选择只lex文件,并创建main程序,单线程模式点下一步5,点击完成6,程序会生成mylexer.l 的lex空文件,我们需要建立一个简单的lex文件已作说明将下列程序源代码覆盖生成的lex代码%{#include "stdio.h"int linenum;%}int [0-9]+float [0-9]*/.[0-9]+%%{int} printf("Int : %s/n",yytext);{float} printf("Float : %s/n",yytext);. printf("Unknown : %c/n",yytext[0]);%%showtitle(){printf("----- Lex Example -----/n");}int main(){linenum=0;yylex(); /* 进行Lex分析*/printf("/nLine Count: %d/n",linenum);return 0;}int yywrap(){return 1;}7,编译lex文件点击工具栏中的Build选项,中间那个图标8,编译完成应该是0个错误,0个警告9,配置VC 6.0启动vc 6.0 建立一个空的控制台工程点击Finish10,添加第8步编译好的C h文件打开Parser Generator 所建工程目录,应当有下列文件注:这里有因为建立了两次两个工程,实际上只有一个11,添加文件在VC 6.0中将source 和Header 相应文件夹处添加好相应的源码和头文件添加完成如下所示12,配置VC环境现在要设置环境变量了,首先要导入Parser Generator的库文件和源文件。

在工具->选项里要设置这些环境变量。

设置完这些文件后,还要在工程->设置里添加yl.lib库:在预编译选项下添加YYDEBUG然后点击OK 完成13,编译生成的C程序一般不会有错误如果编译的有错误,下面有一些常见错误的处理方式error LNK2001: unresolved external symbol _main解决办法(zz)error LNK2001: unresolved external symbol _main解决办法解决外部符号错误:_main,_WinMain@16,__beginthreadex -!t'my`yK在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有柚煤孟钅坎问? 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有: m1+4#'libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main (gd){jLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 OuR5T>> msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 -*_g+&Us1nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex }t,6 oTnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex <u%N(=9]wpN"w"1. Windows子系统设置错误, 提示: )WA5FzPLwlibcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main *+oJ(e4f{'{1]\Windows项目要使用Windows子系统, 而不是Console, 可以这样设置: *^'y#/Dgz !DF-%3|[Project] --> [Settings] --> 选择"Link"属性页,Qo!在Project Options中将/subsystem:console改成/subsystem:windows T`H.k"Y{Xn?{t-*{2. Console子系统设置错误, 提示: vwK 7b0MLIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 4Y~E`L0,8%P ><"控制台项目要使用Console子系统, 而不是Windows, 设置: *Cl5Y':|hsipSn4_[Project] --> [Settings] --> 选择"Link"属性页, WveN']q-\在Project Options中将/subsystem:windows改成/subsystem:console BR4C@Z1 vBkC&3. 程序入口设置错误, 提示: dy2$&$=msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 s P.>uExtG- (k~1q通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口: r#~P5[aVOs hl6 i[Project] --> [Settings] --> 选择"Link"属性页, "1zk_#B*在Category中选择Output, p HGRL再在Entry-point symbol中填入wWinMainCRTStartup, 即可>IC}SZF)c[@\.dm4. 线程运行时库设置错误, 提示: X;t_- fnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex AmiBqZTpnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex sz 23_{c?oz! {Fd-这是因为MFC要使用多线程时库, 需要更改设置: L a-Y,1x](uAk>h^pbM[Project] --> [Settings] --> 选择"C/C++"属性页, '%ET|1#SO在Category中选择Code Generation, ;Y-M)k(再在Use run-time library中选择Debug Multithreaded或者multithreaded 0v~5<Y'Z咸鱼游侠(75374355) 12:11:11 <mW-.@e5_其中, W_qa?JvSingle-Threaded 单线程静态链接库(release版本) Kh4w QMultithreaded 多线程静态链接库(release版本) |F]g[En 4multithreaded DLL 多线程动态链接库(release版本) s-'qYgA6pDebug Single-Threaded 单线程静态链接库(debug版本) _ 7w_./y-Debug Multithreaded 多线程静态链接库(debug版本) <[ ePw-Debug Multithreaded DLL 多线程动态链接库(debug版本) H8V/O9|(9^x@/单线程: 不需要多线程调用时, 多用在DOS环境下/PJ|d5多线程: 可以并发运行clUdag,C静态库: 直接将库与程序Link, 可以脱离MFC库运行X]pEmHl动态库: 需要相应的DLL动态库, 程序才能运行\n{&_:b+qrelease版本: 正式发布时使用9J;ZZ/3debug版本: 调试阶段使用k9PoFC#k14,测试程序程序上可以输入一些字符,如果出现图是结果,即为配置成功。

相关文档
最新文档