QLibrary myDll;
myDll.setFileName("D:/Mine/ku/7_55/7_55/HKSM.DLL");
bool loaded =myDll.load();
if(loaded)
{
QMessageBox::information(NULL,"OK","DLL load is OK!");
}
我在Qt中先调用了Dll库,用了这段代码,显示了窗口,我认为是成功了
但是,我现在要调用DLL库里面的函数,这是我调用函数写的程序,这次弹出的就是Function is not ok
typedef void (*FunSUSBP)(void*, void*);
FunSUSBP funSUSBP = (FunSUSBP)myDll.resolve("FunSUSBP"); //援引 函数
if (!funSUSBP) //是否成功连接上 函数
{
QMessageBox::information(NULL,"OK","Link to Function is not OK!");
}
我就调不出来了,因为dll里面的函数实在是太复杂了
我要调用的是这个函数,第一个参数是一个函数
funSUSBP(getUSBPrinter_CallbackProc, (unsigned char *)"HK");
这个函数是
void getUSBPrinter_CallbackProc(getprinterinfo_usbPrinterStateParms_Type *usbPrinterState)//获取打印机回调过程
{
usableUSBPrinterList_Type *curUSBPL;//定义了一个结构体指针
if (usbPrinterState == NULL)
return;
printf("\nEnter the USB printer discovery call-back processing :register into the USB printer list.\n");//进入USB打印机发现回调处理:注册到USB打印机列表中
if ((curUSBPL = (usableUSBPrinterList_Type *)malloc(sizeof(usableUSBPrinterList_Type))) == NULL)//给curUSBPL数组分配内存,判断是否为空
memset(curUSBPL , 0 , sizeof(usableUSBPrinterList_Type));//数组内的值都设定为0
curUSBPL->usbPrinterState = usbPrinterState;//将得到的值传给curUSBPL结构体指针中的usbPrinterState成员变量
if (currentUSBPrinterList == NULL)//如果当前USB打印机当前列表指针为空
currentUSBPrinterList = curUSBPL;//将数组的首地址赋值给-USB打印机当前列表指针
else
curUSBPL->next = currentUSBPrinterList;//调用结构体的next的成员变量,把-USB打印机当前列表指针-赋值给next
currentUSBPrinterList = curUSBPL;//将数组首地址传给列表指针
currentFoundUSBPrinterNumber ++;//当前找到的打印机编号加一
}//我得到了一个值uPS,我把curUSBPL内的值全设为0,然后我把uSP的值给curUSBPL的结构体指针uuppss,如果List为空,那么我把curUSBPL给它,否则,我把List设为curUSBPL的链表的下一个,然后把curUSBPL传给List,编号加一
这里面的注释都是我自己加的,帮我调出这个函数,好几天了,感谢大家