开始cpp文件,相关逻辑,include引用,相关的头文件; 窗体信息相关,先设置nullptr空指针,参考[[nullptr]]; 在Core的构造函数中,设置一下字体,是微软雅黑; ![[Pasted image 20240801205242.png]] 获取窗口标题的getWindowTitle函数实现,根据[[qt HWND]]拿到对应的标题; ![[Pasted image 20240801205711.png]] 设置一个TagWNDINFO结构体,用在EnumProc全局函数,枚举窗口,判断是否为重复窗体; ![[Pasted image 20240801205805.png]] 全局函数GetProcessMainWnd,是配合[[GetCurrentProcessId]]获取主窗体相关; ![[Pasted image 20240801205941.png]] 继续,全局函数CustomWndProc,是根据,不同的窗体case操作,emit触发,不同的信号,后续用于窗口遮罩居中相关 ![[Pasted image 20240801210109.png]] 以上,完成了各种全局函数; 对应的initHWND初始化窗体相关,通过枚举窗体,调用主窗体,完成窗体的初始化即可; ![[Pasted image 20240801210336.png]] instanceCount函数实现,后续是通过,unity端,传参过来设定最大的实例化sdk个数,对qt子进程数量,进行限制; ![[Pasted image 20240801210518.png]] quit函数,就是退出qt子进程相关,对相关变量,完成清理; ![[Pasted image 20240801210707.png]] result函数,是把一个json结构体的数据,传参回给unity回调,参考[[C++ strcpy_s的详细用法]] ![[Pasted image 20240801211200.png]] success和error,分别是成功和失败的回调,都是调用上述的result函数; ![[Pasted image 20240801211350.png]] init初始化函数实现,先通过initHWND函数,判断窗体初始化,是否正常,然后通过传参过来的json数据体,拿到最大的实例数量限制,进行判断,是否正常; 进而调用,success或者error回调; ![[Pasted image 20240801211531.png]] invoke触发函数,是通过传参判断,是否为init初始化,通过switch和case的方式,调用对应init初始化函数,还是调用,对应的quit退出函数; ![[Pasted image 20240802111908.png]] 右键选择,添加新文件; ![[Pasted image 20240802111604.png]] 选择只创建cpp即可; ![[Pasted image 20240802111636.png]] 是主函数入口,命名为main.cpp; ![[Pasted image 20240803153143.png]] 主函数的入口,是DllMain相关逻辑,还有一个Invoke触发函数的导出,在Unity端可以调用,参考[[dllexport与dllimport的区别]]; ![[Pasted image 20240802112240.png]] 之前在创建项目的时候,有默认创建dll和一个global相关的文件,没有使用到,直接删除即可,删除后,头文件和源文件,目录如下: ![[Pasted image 20240802112558.png]] 回到.pro项目文件,之前是配置了,debug和release的输出目录; ![[Pasted image 20240802112453.png]] 先修改项目设置,不让其进行默认编译 ![[Pasted image 20240803153242.png]] 取消勾选 ![[Pasted image 20240803153255.png]] 确认是Release编译,然后点击构建; ![[Pasted image 20240802112701.png]] 会有警告,但是编译成功; ![[Pasted image 20240802112748.png]] 编译目录,也是跟.pro项目配置一致; 但这只是最基础的编译结果,它对应的依赖,还需要加进来; ![[Pasted image 20240803153426.png]] 根据首字母开头,找到qt对应编译器的,命令行模式,这里也是64位; ![[Pasted image 20240802145428.png]] 复制所在路径 ![[Pasted image 20240803153444.png]] `cd` 到这个路径,回车 ![[Pasted image 20240803153520.png]] 可以看到,还是在原路径 ![[Pasted image 20240803153557.png]] 敲击对应的盘符,回车即可,例如这里是在G盘:`G:` ![[Pasted image 20240803153626.png]] 就自动跳转到,对应的路径了 ![[Pasted image 20240803153642.png]] `windeployqt` 指令,是可以自动检索出,qt相关的依赖文件,不管是exe还是dll都可以的,参考[[Qt库依赖的打包路径]],这里是dll文件,tab补全名字即可,回车; ![[Pasted image 20240803153712.png]] 自动检索完毕 ![[Pasted image 20240803153731.png]] 路径文件目录,也正常 ![[Pasted image 20240803153801.png]]