相关文章推荐
酷酷的仙人球  ·  Android Studio ...·  3 月前    · 
干练的馒头  ·  kubernetes - kubeadm ...·  1 年前    · 
果断的跑步鞋  ·  有序字典 ...·  1 年前    · 
深情的青蛙  ·  途牛任命陈世宏为CTO ...·  1 年前    · 

初次使用QT编写上位机,遇到了问题。留个记录,供以后参考。使用QTCreator开发芯片烧录的上位机软件。QT的版本为开源的使用mingW编译器,用的VS2019编写的下位机USB驱动的dll库。开发完界面及文件功能后,往QT导入DLL库,发现运行出错,报错程序运行异常,后面发现该问题是QT编译器是32位而本人开发的USB驱动是64位的,好家伙直接重新开始写32位的USB驱动。再次导入DLL库,编译出错。确定了是编译器不同,mingw和MSVC两者对于函数的编译结果不太一样,于是开始更换QT的版本,这也是网上大部分推荐的方法,添加了VS2017的编译环境,配置后发现QT竟然无法识别到本机的配置,此路不通。最后发现是DLL库放错了位置,真的晕死。将文件放置到mingw的debug文件夹下面就好了,说明一下本人的USB驱动是从Linux下移植过来的,所以本人的解决方式仅供参考,还请各位具体问题具体分析。

Qt Creator 中选择“File”->“New File or Project”,然后在左侧面板中选择“ Qt Widgets Application”。请选择您喜欢的任何工具包,并单击“Finish”按钮。现在,我们需要将生成的myLib. dll 文件复制到我们的 Qt 应用程序的目录中。将其放入项目目录的“lib”文件夹中,并将其添加到项目文件。最后,在我们的 Qt 应用程序中,我们可以使用库中定义的函数myFunc()。注意,这将自动在应用程序运行时链接到myLib. dll ,并根据需要选择正确的版本。 发现有时候调用不成功,举例说明我的代码如下: typedef int (*Fun)(); QLibrary testLib("Protocol. dll "); //已把 dll 放在debug中 if (testLib.load()) Fun getObj = (Fun)testLib.resolve(... 这个我是亲自尝试过了的,我的 Qt 是64位,调用32位 dll 一直不成功,所以位数一定要一致。 debug版本和release版本的 dll 和程序的版本对应一致,不然可能不成功。 这一个是我在 加载 失败 dll 之后在网上查找的可能原因,以防以后还遇到 加载 失败的情况记录下来。 1、将建立的 dll 库的文件用 QT Creator 运行起来 2、找到生成的 xxx-Desktop_ Qt _5_9_1_MinGW_32bit-Debug文件,其内Debug或者Release(这个需要看你自己用哪种方式编译)打开,将其里的 . dll 和 .a文件复制到 要链.. 声明: 事先我已经自己动手写了一个简单的 dll 文件(my DLL . dll ),C版接口的。并且用我前两篇有关 DLL 文章里面的方法,从 dll 中导出了 导入 库(.lib)文件, dll 中有两个函数,原型如下:voidHelloWorld(); //函数内部调用Win32 API,功能是弹出一个helloworld提示框intadd(inta,intb); //实现两个数相加,并返...