三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

VS2022+QT5.15.2进行CAN通讯的上位机开发(3)

VS2022+QT5.15.2进行CAN通讯的上位机开发(3)

现有上位机开发基本都是二次开发,很少是原生开发,因此一般都需要将供应商提供的开发包进行调用,在开发包基础上进行二次开发,开发包中文件类型有很多,我主要是基于Windows系统的开发包二次开发,主要文件类型为.h、.lib、.dll。

在之前的博客中我们能够在VS2022上运行成功并弹出UI界面,但在根据进行实际编程前,需要将开发包中的文件加载或者能让VS2022软件识别到需要调用的文件路径在哪里、调用的文件名称是什么。

我这边参照的博客是来自稀土掘金的鲁班代师,链接如下:

https://juejin.cn/post/7200297595474624573

文章讲解很详细,我就不进行重复说明,讲我遇到的问题,在VS2022链接器->输入->附加依赖项中只需要添加好需要调用的.lib文件名称就行了,不要添加.dll文件名称。

一开始我按照博客在附加依赖项中添加了.lib和.dll文件名称,并将供应商提供的.dll文件全部复制在生成的exe文件下,进行编译的过程中发现报错:

1>LINK : fatal error LNK1104: 无法打开文件“***.dll”

然后我到输出文件路径下去查看是否有.exe文件生成,输出文件路径可以右键点击VS2022中创建的项目名称,选择属性,在弹出的窗口界面配置属性->常规->输出目录进行查看,就可以知道本项目生成的exe文件地址了,一般在创建的项目文件夹下,我的输出文件路径D:\UICPP\QtWidgetsApplication1\x64\Debug,在改文件路径下有.log文件,点击进去就可以看到具体的报错信息了。

在输出文件下没有找到生成的exe文件,我首先将报错复制在网上查找解决办法,但是解决方法只是提供了思路,对于小白而言,按照解决思路去解决问题反而一头雾水无从下手。

在查找一番博客后,我还是没有解决,但我确定一点:在没有进行开发包文件加载前,程序本身可以正常运行,在按步骤添加之后反而报错那就说明在添加过程中存在问题。

1.可以排除的是添加文件的文件夹路径,一般不会出现问题,但要是添加错了文件夹就当我没说;

2.可以确定在添加附加依赖项或将.dll文件复制在exe文件下一个或者两者都存在问题。

3.将需要加载的dll文件全部删除,重新运行,发现还是报相同的错误,可以暂时排除掉dll文件的事情;

4.在删除dll文件的基础上,将附加依赖项的文件名称也全部删除,重新运行,运行成功,OK可以确定问题出在这里。

附加依赖项中只能添加.lib文件,如果加入.dll文件就会报上面的错误。

但我们的目的是什么,是用VS2022调用开发包文件。

在将附加依赖项的文件名称删除之后,尝试在main.cpp文件调用开发包中的结构体、头文件,这些都是没有问题的,但这并不意味着我们将开发包中的文件全部加载成功,我们进行二次开发是需要调用现有的函数的,供应商提供的.lib、.dll文件就是函数调用的输出文件,因此我在.cpp文件尝试调用开发包中的函数,在编写过程中没有报错,但是运行过程中出现报错,报错内容依旧是:系统找不到.dll文件,此时只需要将开发包中的.dll文件放到exe文件下就行,运行无报错,成功出现窗口弹窗。

← 返回列表