最近写桌面测试程序,要使用到tsclib.dll, 只有一个TSCLib.dll和TSCLIB.lib文件。因此选择显示调用dll——使用QLibrary类
在pro文件中,添加.lib文件的位置: LIBS+= -L D:/hitempt/api/ -l myDLL
dll文件在动态调用时有两个作用:
1.编译时用到,
2.运行时用到,
因此至少在运行文件夹中有dll文件,源码中dll文件位置与指定位置相同。
定义函数指针类型
typedef int (*ABOUT)();
typedef int (*OPENPORT)(char *);
OPENPORT openport; //定义函数指针
QLibary TSCdll; //定义QLibary结构体
bool MainWindow::dynamicLoad(){
bool ret = false
TSCdll.setFileName("lib/TSCLIB.dll");
if(TSCdll.load())
{
if((openport = (OPENPORT)TSCdll.resolve("openport"))==NULL) //返回
qDebug()<<"can not resolved it!";
.......
}
return ret;
}
这是C编程的库
TSCLIB 库的函数原型如下
int CALLBACK openport(char*);
int CALLBACK closeport();
int CALLBACK sendcommand (char*);
int CALLBACK setup (char *,char *,char *,char *,char *,char *,char *);
int CALLBACK downloadpcx (char *filename,char *image_name);
int CALLBACK barcode (char *,char *,char *,char *,char *,char *,char *,char *,char *);
int CALLBACK printerfont (char *,char *,char *,char *,char *,char *,char *);
int CALLBACK clearbuffer();
int CALLBACK printlabel(char *, char *);
int CALLBACK formfeed();
int CALLBACK nobackfeed();
BOOL CALLBACK isready();
int CALLBACK windowsfont(int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, char *szFaceName, char *content);
int CALLBACK about();
/****************************************************************************************/
这样在定义函数执行时就有的放矢。