Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt中使用第三方dll(没有可用的.lib文件)_C++_Windows_Qt_Dll_Shared Libraries - Fatal编程技术网

C++ 在Qt中使用第三方dll(没有可用的.lib文件)

C++ 在Qt中使用第三方dll(没有可用的.lib文件),c++,windows,qt,dll,shared-libraries,C++,Windows,Qt,Dll,Shared Libraries,我的一个朋友让我创建一个应用程序,使用“Velleman VM167”来控制一些事情。这个VM167只不过是一个带有一些GPIO和一些ADC的USB接口卡 此VM167附带一个SDK,由两个DLL(VM167.DLL和MPUSBAPI.DLL,其中怀疑第一个DLL中使用了alst DLL)和一个头文件VM167.h组成 我以前在Delphi中成功地使用过该卡,但现在想将其转换为Qt。由于这只是一个简单的项目,我认为这可能是正确的时机 我想做的是导入DLL并使用在该DLL中实现的函数。我尝试了很多

我的一个朋友让我创建一个应用程序,使用“Velleman VM167”来控制一些事情。这个VM167只不过是一个带有一些GPIO和一些ADC的USB接口卡

此VM167附带一个SDK,由两个DLL(VM167.DLL和MPUSBAPI.DLL,其中怀疑第一个DLL中使用了alst DLL)和一个头文件VM167.h组成

我以前在Delphi中成功地使用过该卡,但现在想将其转换为Qt。由于这只是一个简单的项目,我认为这可能是正确的时机

我想做的是导入DLL并使用在该DLL中实现的函数。我尝试了很多东西,用谷歌搜索了很多教程,但它们总是使用
.lib
.a
文件。我没有。 有没有办法使用此DLL并使用Qt控制卡

Im使用qt5.3和mingw32位编译器

链接到产品说明和SDK下载:

使用不带C/C++库文件的Windows DLL的方法是通过
LoadLibrary
GetProcAddress


在您链接到的VM167 SDK中有一些例子,一个在
examples\VM167DemoBCB\u dynamic\load\Unit1.cpp
中,另一个在
examples\vm167demoevc\main.cpp

中,因为您正在使用Qt,您可以使用
QLibrary
,尤其是它的
resolve
方法。

感谢您为我指出了正确的示例!这与QT站点上的Qlibrary类信息一起让我启动并运行得非常快。糟糕的是,我不知道我的代码是做什么的。。。你能简单解释一下这里发生了什么吗?QLibrary VMDLL(“VM167”);typedef int(*VOID2INT)(void);VOID2INT OpenDevices=(VOID2INT)VMDLL.resolve(“mysymbol”);我的想法是创建一个带有相应参数的Typedef,并将结果作为一个类型。然后我创建一个这种类型的实例,然后将它的指针地址设置为DLL中实际函数的指针地址。有什么是对的吗?@Jetse:是的,你完全明白了。您需要typedef,以便编译器知道如何将参数传递给函数,以及预期的返回类型。QLibrary完成加载DLL并查找所需函数的任务,然后返回指向该函数的指针,然后通过该指针调用该指针。