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