之前章节,在对应目录,是生成了,qt dll 相关依赖文件 ![[Pasted image 20240803153822.png]] 然后,需要在Unity工程,对应目录,生成以上qt相关的dll和依赖文件,先确认qt工程,所在目录; ![[Pasted image 20240803153858.png]] 在它的上一级的上一级,创建一个Unity工程,基于Unity 2019.3.6 ![[Pasted image 20240803153915.png]] ![[Pasted image 20240803153952.png]] 创建完成后,记得把Unity工程关了,不然通过qt生成或者修改dll文件的时候,有可能会出现,占用的情况; 回到qt,注释之前的Output相关; 然后设定一下,dll的生成目录,是上上级,对应Unity工程的对应路径,需要注意的是,如果文件夹不存在,也会自动生成文件夹; ![[Pasted image 20240802154203.png]] 重新点击,构建按钮 ![[Pasted image 20240802154414.png]] 可以看到,dll和文件夹,都顺利创建出来 ![[Pasted image 20240803154117.png]] 复制所在路径 ![[Pasted image 20240803154129.png]] 循例,基于64位MinGW编译器环境,cd和跳转盘符,抵达对应的文件夹 ![[Pasted image 20240803154210.png]] 然后 `windeployqt` 完成依赖的自动生成 ![[Pasted image 20240803154243.png]] 重新打开Unity工程,创建 `JustTest` 测试脚本 ![[Pasted image 20240802154834.png]] `using` 引用命名控件,还有 `Serializable` 可序列化类 `InitData` 也是包含,传递给qt的相关数据体; ![[Pasted image 20240802154900.png]] 通过DllImport的形式,写的是,对应dll的前缀名字,其中的方法,是在qt中export出来的Invoke触发器方法,再定一个enum枚举,包含Init和Quit俩元素,分别是初始化和退出SDK相关; ![[Pasted image 20240802155040.png]] 通过一个静态布尔isInit判断,是否已经初始化,最开始的时候,设置为false即可 ![[Pasted image 20240802155444.png]] 再弄俩回调,也是分别对应,初始化和退出的,其中OnInit初始化回调,是会把上述静态布尔,设置为true,判断为,初始化成功; ![[Pasted image 20240802155408.png]] 在Start开始函数中,完成传参使用的,json数据体构建,然后Invoke触发,Init初始化,还有绑定回调OnInit; 在OnApplicationQuit退出函数中,也是根据isInit判断,Invoke触发qt sdk的Quit退出函数即可; ![[Pasted image 20240802155542.png]] 这样直接挂载脚本,运行unity的话,是会报错的,因为Unity.exe缺少qt相关的dll组件; 之前自动生成qt dll的时候,有一个qwindows的dll,需要复制拷贝到,Unity引擎所在目录; ![[Pasted image 20240803154318.png]] 复制拷贝后: ![[Pasted image 20240802160230.png]] ![[Pasted image 20240802160255.png]] 回到Unity,测试脚本挂载到,相机上 ![[Pasted image 20240802160314.png]] 运行Unity,可以看到,加载qt相关dll,初始化的log回调,是正常的 ![[Pasted image 20240802160353.png]] 初始化回调,对应qt的log输出,一致 ![[Pasted image 20240802160631.png]] 然后,开始弄,硬件信息相关,参考[[Windows WMIC命令使用详解]] 先在这个目录,创建一个WMIC文件夹 ![[Pasted image 20240803154504.png]] 然后,在该目录下,创建一个空白txt文件 ![[Pasted image 20240803154531.png]] 修改文件后缀为pri ![[Pasted image 20240803154544.png]] 回到pro工程文件,添加include引用,保存修改 ![[Pasted image 20240802161530.png]] 等待编译完成,可以看到,空白工程,就正常被引用进来了; ![[Pasted image 20240802161618.png]]