[资源]孙鑫VC++视频教程打包下载——第一课

最近在学MFC,看了孙鑫的VC++视频教程,觉得不错,找到了enet上面的版本,录屏的FLASH,分辨率1024X768,很清楚,比youku上的好的多,于是把每一课打成一个包,里面包括:

  • 视频教程
  • PPT
  • 源代码

上传速度有限,先放出第一课(40M)

点击进入fs2you下载页

如果有时间会补充iask和纳米盘的下载链接

Update:

请到本博客的下载页面查看

以后不再单贴发布,谢谢!

Tags: , ,

Pro*C "error LNK2001: unresolved external symbol "void __cdecl sqlcxt" 解决方法

最近在做数据库的大作业,VC+Pro*C的小程序,我使用的环境是:

Win2003 Enterprise Edition

Oracle9i(ora90)

VC6.0

写出来的.pc文件使用Pro*C预编译为.cpp文件后,进行链接时出错:

.obj: error LNK2001: unresolved external symbol “void __cdecl sqlcxt

上网查了一下,解决方法如下:

.pc文件预编译后的.cpp文件中有如下代码:

/* SQLLIB Prototypes */

extern void sqlcxt (void **, unsigned long *,

                    struct sqlexd *, const struct sqlcxp *);

extern void sqlcx2t(void **, unsigned long *,

                    struct sqlexd *, const struct sqlcxp *);

extern void sqlbuft(void **, char *);

extern void sqlgs2t(void **, char *);

extern void sqlorat(void **, unsigned long *, void *);
其中extern void sqlcxt就是出错的部分,要解决这个问题,只要将其修改为:
extern "C" void sqlcxt (void **, unsigned long *,

                    struct sqlexd *, const struct sqlcxp *);
也就是增加了一个"C",它的用途是“告诉编译器:这是一个用C写成的库文件,请用C的方式来链接它们。”
(参见:http://tech.163.com/06/0118/09/27O66HCC0009159Q.html)。
有遇到相同问题的朋友可以参考一下。
BTW,今天还遇到一个问题,在include了iostream这个头文件以后,使用
cout<<setw(5)<<stu_name;
这样的句子时编译出错,错误是:
error C2065: 'setw' : undeclared identifier
在网上搜索以后,得知遇到这种情况只需再include一下iomanip这个头文件即可,一试果然有效。
Tags: , , , ,

C语言实现的编译原理语法分析程序中语法规则的存储

最近在做编译原理课的语法分析词法分析等程序,遇到的第一个问题就是如何存储语法规则,我把我的想法贴出来,可能并不是很合理,不过给有兴趣的人做一个参考。

  1. typedef struct RuleNode {
  2. int Number;
  3. char Left;
  4. char * Right;
  5. int RightNum;
  6. int RightNumMax;
  7. } RNode, *RNPtr;

typedef struct Rule {
int Number;
int MaxNum;
RNPtr * AllRule;
} Rule;
我使用的方法中,定义了两种结构体。

第一个是struct RuleNode,这个结构体是存储单句的语法规则的,其中包括:
int Number ——存储此句语法规则的编号(程序写到现在觉得似乎可以省略此项)
char Left ——存储“->”符号左边的表达式,我的程序比较简单,规定了这里只能是一个字母,所以用char,但是事实上应该不止一个非终结符,每个也不只一个字母,所以也许应该用char**或者cstring[]?
char * Right ——存储“->”右边的表达式,还是和上面一样规定了一个字符只能是一个字母组成,应该改成char**。
int RightNum ——存储Right指针后有几个连续空间存储字符。
int RightNumMax ——动态分配空间给Right时的空间大小,若RightNum达到这个数,就realloc。

第二个结构体是struct Rule,这个就很简单了,一个动态分配空间的数组存储指向每个规则结点的指针,另外两个是个数和最大值~

以上只是我一点不成熟的想法,希望能够对需要的人有帮助。

Tags: , ,

图形学作业——画圆

今天早晨好好看了看笔记,基本理解了算法的意思,于是就动手写了一下,再稍作修改,就成功了,下面是代码的主要函数,拿出来给计算机图形学初学者共享:

  1. void drawCircle(int xc, int yc, int r) <br/>//By Alfred Phlower <br/>//2006.09.17 <br/>//xc,yc为圆心坐标,r为半径 <br/>{ <br/>int x,y,k; <br/>//x,y为当前点坐标,k为计数器 <br/>float p; <br/>//p为决策参数

x=0;
y=r;

p=5.0/4.0-(float)r;

for(k=0;x<=y;k++)
{
drawPixel(x,y,xc,yc);

if(p<0)
{
x++;
p+=(2*x+1);
}
else
{
x++;
y–;
p+=2*x-2*y+1;
}
}
}

drawPixel()是一个写点函数,计算的是1/8圆,写点函数将算出的坐标画到八个1/2象限上。

我是在TC2.0下实现的,不过drawCircle()函数中没有调用任何库函数,所以可以用在其他地方,只要drawPixel()中调用的库函数是使用的编译环境支持的就行了。

Tags: , ,
    主题制作者:Directory JournalElegant Directory