BC3.1的问题

苇子哥哥 2005-01-03 06:09:21
用BC3.1编译下面的程序,编译可以通过,但是连接提示下面的错误:
Linking BEZIER.EXE: Linker Error: Undefined symbol _grapherrormsg in module G:BEZIER.CPP
Linker Error: Undefined symbol _graphresult in module G:BEZIER.CPP
Linker Error: Undefined symbol _initgraph in module G:BEZIER.CPP
Linker Error: Undefined symbol _closegraph in module G:BEZIER.CPP
Linker Error: Undefined symbol _line in module G:BEZIER.CPP Linker Error: Undefined symbol _cleardevice in module G:BEZIER.CPP


源程序如下:

#include <math.h>
#include <iostream.h>
#include <string.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <graphics.h>
#include <bios.h>
#include <process.h>

void init(void);//图形初始化
void bezier(float *con);//绘制曲线
void arrmulti(float *leftarr,float *rightarr,float *resultarr,int m,int n,int q);//矩阵相乘

void main()
{
int x0,y0,x1,y1,x2,y2,x3,y3;

cout<<"请输入第一控制点的数据."<<endl;
cout<<"x0=";
cin>>x0;
cout<<"y0=";
cin>>y0;

cout<<"请输入第二控制点的数据."<<endl;
cout<<"x1=";
cin>>x1;
cout<<"y1=";
cin>>y1;

cout<<"请输入第三控制点的数据."<<endl;
cout<<"x2=";
cin>>x2;
cout<<"y2=";
cin>>y2;

cout<<"请输入第四控制点的数据."<<endl;
cout<<"x3=";
cin>>x3;
cout<<"y3=";
cin>>y3;

init();
cleardevice();
line(x0,y0,x1,y1);
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
float control[]={x0,y0,x1,y1,x2,y2,x3,y3};
float arguments[]={-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0};
float r[8];
arrmulti(arguments,control,r,4,4,2);/*矩阵相乘*/
bezier(r);/*依次求出曲线上各点的坐标,绘制曲线*/
getchar();
closegraph();
}

void arrmulti(float *left,float *right,float *resultarr,int m,int n,int q)/*矩阵相乘*/
{
for(int i=0;i<m;i++)
for(int j=0;j<q;j++)
{
*(resultarr+i*q+j)=0;
for(int k=0;k<n;k++)
*(resultarr+i*q+j)+=(*(left+i*n+k))*(*(right+k*q+j));
}
}

void init(void)/*图形初始化*/
{
int gdriver=DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode,"e:\\bc31\\BGI");
errorcode=graphresult();
if(errorcode<0)
{
printf("Graphics error:%s\n",grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
}

void bezier(float *con)/*依次求出曲线上各点的坐标,绘制曲线*/
{
float t;
float result1[2];
float result2[2];
float left[]={0,0,0,1};
arrmulti(left,con,result1,1,4,2);
for(t=0;t<=1;t+=0.02)
{
left[0]=t*t*t;
left[1]=t*t;
left[2]=t;
arrmulti(left,con,result2,1,4,2);
line(result1[0],result1[1],result2[0],result2[1]);
result1[0]=result2[0];
result1[1]=result2[1];
}

}



请高手指点。谢谢,我的qq:70687933
...全文
285 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pacman2000 2005-01-07
  • 打赏
  • 举报
回复
没有选中使用图形库。 用xteaj(半桶水) 的方法即可。
prolj 2005-01-07
  • 打赏
  • 举报
回复
Linker Error: Undefined symbol _grapherrormsg in module G:BEZIER.CPP
Linker Error: Undefined symbol _graphresult in module G:BEZIER.CPP
Linker Error: Undefined symbol _initgraph in module G:BEZIER.CPP
Linker Error: Undefined symbol _closegraph in module G:BEZIER.CPP
Linker Error: Undefined symbol _line in module G:BEZIER.CPP Linker Error:Undefined symbol _cleardevice in module G:BEZIER.CPP
明白告诉你少哪个库中的哪个文件,静下心来,自己找一下,以后用问题要自己试着解决,学会自力更生
  • 打赏
  • 举报
回复
Options->Linker->Libraries==>Graphics library选中即可

24,853

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧