★TC的bios.h的bioskey函数在VC下不能用,有什么方法可以解决?解决方法
★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函数无法解析的错误:
错误 48 error 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.obj SalaryManage_test
这是引用bioskey函数的函数的代码:
bios.h头文件代码:
这是一个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函数无法解析的错误:
错误 48 error 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.obj SalaryManage_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);