大家好,初学者,刚接触C++和Qt。之前发过帖子,按照跟帖中的方法没有解决问题,所以再次来论坛求助 Qt 版本如下图: 构件套件为MinGW 32bit 软件的功能是通过调用API的接口来控制外接设备的驱动。 问题在于在Qt中加载dll文件成功后,调用dll中的API函数,并将函数的返回值赋给一个变量。但是总是报错,请问怎么解决这个问题。 1、加载dll文件没问题。 QLibrary mylib("vxlapi.dll"); //加载所用到的dll文件 if(mylib.load()) { qDebug()<<"load successed"; } else { qDebug()<<"load failed"; } 2、dll文件相关的头文件vxlapi.h中对需要调用的函数进行了申明,就是这个xlOpenDriver(): /*------------------------------------------------------------------------------ xlOpenDriver(): -------------------------------------------------------------------------------- The Application calls this function to get access to the driver. */ #ifdef DYNAMIC_XLDRIVER_DLL // in case of dynamic loading the application defines this function typedef XLstatus (_XL_EXPORT_API *XLOPENDRIVER) (void); #else XLstatus _XL_EXPORT_DECL xlOpenDriver(void); #endif 3、定义局部变量CallStatus,并将函数xlOpenDriver()的返回值赋给CallStatus,然后就报错了说找不到此函数。 void CANInit::on_xlOpenDriver_pushButton_clicked() { XLstatus CallStatus; CallStatus=xlOpenDriver(); if(CallStatus) { qDebug()<<"Function call successed"; } else { qDebug()<<"Function call failed"; } } API的使用手册给出的说明是这样的: 我用dll破解工具exeScope看了这个dll,貌似里面是有这个函数的。 请问大神这个是Qt配置的问题还是dll文件的问题,怎么解决?谢谢了 最后附上程序压缩包,里面有dll文件,在debug文件夹下。如果大神有空的话帮我调一下,感谢了。 https://pan.baidu.com/s/1eTKGW1c
QLibrary mylib("vxlapi.dll"); //加载所用到的dll文件 if(mylib.load()) { qDebug()<<"load successed"; } else { qDebug()<<"load failed"; }
/*------------------------------------------------------------------------------ xlOpenDriver(): -------------------------------------------------------------------------------- The Application calls this function to get access to the driver. */ #ifdef DYNAMIC_XLDRIVER_DLL // in case of dynamic loading the application defines this function typedef XLstatus (_XL_EXPORT_API *XLOPENDRIVER) (void); #else XLstatus _XL_EXPORT_DECL xlOpenDriver(void); #endif
void CANInit::on_xlOpenDriver_pushButton_clicked() { XLstatus CallStatus; CallStatus=xlOpenDriver(); if(CallStatus) { qDebug()<<"Function call successed"; } else { qDebug()<<"Function call failed"; } }
基本问题. 加 __declspec(dllimport)
16,212
社区成员
26,592
社区内容
加载中
试试用AI创作助手写篇文章吧