131 lines
4.1 KiB
Markdown
131 lines
4.1 KiB
Markdown
开始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]] |