读书人

★TC的bios.h的bioskey函数在VC下不能

发布时间: 2012-05-23 13:44:13 作者: rapoo

★TC的bios.h的bioskey函数在VC下不能用,有什么方法可以解决?
这是一个C程序项目,用到了TC有而VC没有的库函数,有什么方法可以解决?添加引用TC的库或者使用相同功能的VC函数。
不可用的TC函数:bios的bioskey(int cmd) ,window(int x,int y,int z,int n)


我直接下载了TC的bios.h头文件,添加引用到VC项目的头文件中,虽然可以include,但是仍然报告一个bioskey函数无法解析的错误:

错误48error LNK2019: 无法解析的外部符号 "int __cdecl bioskey(int)" (?bioskey@@YAHH@Z),该符号在函数 "int __cdecl menu_select(void)" (?menu_select@@YAHXZ) 中被引用d:\我的文档\visual studio 2010\Projects\SalaryManage_test\SalaryManage_test\GongZi.objSalaryManage_test

这是引用bioskey函数的函数的代码:

C/C++ code
int menu_select(){   char *f[]= {     /*定义菜单字符串数组*/   "**************MENU*************", /*菜单的标题行*/   " 0. init list", /*初始化双链表*/   " 1. Enter list", /*输入数据,创建双链表*/   " 2. List all \n",  /*显示所有记录*/   " 3. Display record by step", /*显示单条记录*/   " 4. Calc the salary", /*计算实发工资*/   " 5. Search record on name", /*查找记录*/   " 6. Delete a record", /*删除记录*/   " 7. Insert record to list", /*插入记录*/   " 8. Append  record to file", /*追加记录*/   " 9. Save data to the file",  /*保存文件*/   " 10. Load data from the file",/*读取文件*/   " 11. Copy the file to new file", /*复制文件*/   " 12. Sort on sfgz",  /*排序*/   " 13. Computer ticket number", /*计算所需票面数*/   " 14. Index on number",  /*索引*/   " 15. Total on number",  /*分类合计*/   " 16. Quit" };  /*退出*/   char s[80];   int  i;   int key=0; /*记录所压键值*/   int c=0;   gotoxy(1,25); /*移动光标*/   printf("press any key enter menu......\n");/*压任意键进入主菜单*/   getch();   system("cls"); /*清屏*/   SetConsoleTextAttribute(ohandle,FOREGROUND_GREEN); /*设置文本颜色为绿色*/   SetConsoleTextAttribute(ohandle,BACKGROUND_BLUE);  /*设置背景颜色为兰色*/   gotoxy(10,2);   putch(0xda); /*输出左上角边框┏*/   for(i=1;i<44;i++)   putch(0xc4); /*输出上边框水平线*/   putch(0xbf);  /*输出右上角边框  ┓*/   for(i=3;i<22;i++)/*输出左右两边的垂直线*/   {      gotoxy(10,i);putch(0xb3);      gotoxy(54,i);putch(0xb3);   }   gotoxy(10,22);putch(0xc0); /*输出左上角边框┗*/   for(i=1;i<44;i++)      putch(0xc4);  /*输出下边框水平线*/   putch(0xd9);  /*输出右下角边框┛*/   //window(11,3,53,21); /* 制作显示菜单的窗口,大小根据菜单条数设计*/   system("cls");  /*清屏*/   for(i=0;i<18;i++)   {      gotoxy(10,i+1);      cprintf("%s",f[i]); /*输出菜单项数组*/   }   i=1;   gotoxy(10,2);  /*设置默认选项在第一项*/   SetConsoleTextAttribute(ohandle,BACKGROUND_BLUE); /*设置背景颜色为蓝色*/   cprintf("%s",f[1]);  /*输出菜单项,表示选中*/   gotoxy(10,2);  /*移动光标到菜单的第一项*/   while(key!=13)   /*所压键不是回车键时*/   {      while(bioskey(1)==0);  /*查询是否压下了一个键*/      key=bioskey(0);   /*返回下一个在键盘压下的键*/      key=key&0xff?key&0xff:key>>8; /*对所压的键进行判断*/      gotoxy(10,i+1);      SetConsoleTextAttribute(ohandle,BACKGROUND_BLUE);/*设置背景颜色为蓝色*/      cprintf("%s",f[i]);  /*输出菜单项*/      if(key==72) i=i==1?17:i-1; /*如压向上光标键↑,i减1,如已到第一行再上移,则到最后一行*/      if(key==80)i=i==17?1:i+1; /*如压向下光标键↓,i加1,如已到最后一行再下移,则到第一行*/      gotoxy(10,i+1); /*光标移动i的下一项*/      SetConsoleTextAttribute(ohandle,BACKGROUND_GREEN); /*将背景颜色设为浅绿*/      cprintf("%s",f[i]);  /*输出菜单项*/      c=i-1;  /*给代表菜单选项的整数赋值*/   }   SetConsoleTextAttribute(ohandle,BACKGROUND_INTENSITY);  /*设置背景颜色为黑色*/   window(1,1,80,25);  /*恢复原窗口大小*/   return c;  /*返回代表菜单选项的整数值*/}


bios.h头文件代码:
C/C++ code
/*    bios.h Access   to   bios   services. Copyright   (c)   Borland   International   1987,1988 All   Rights   Reserved. */ #if   __STDC__ #define   _Cdecl #else #define   _Cdecl    cdecl #endif int    _Cdecl   bioscom(int   cmd,   char   abyte,   int   port); int    _Cdecl   biosdisk(int   cmd,   int   drive,   int   head,   int   track,   int   sector, int   nsects,   void   *buffer); int    _Cdecl   biosequip(void); int    _Cdecl bioskey(int cmd); int    _Cdecl   biosmemory(void); int    _Cdecl   biosprint(int   cmd,   int   abyte,   int   port); long    _Cdecl   biostime(int   cmd,   long   newtime);  




[解决办法]
去掉 使用预编译头 选择项试试。
[解决办法]
用api来重写。

读书人网 >VC

热点推荐