zhuzichu520 / FluentUI

FluentUI for QML
MIT License
3.61k stars 476 forks source link

插件fluentuiplugin.dll使用了不兼容的Qt库 #192

Closed CyclamenY closed 1 year ago

CyclamenY commented 1 year ago

在Qt中打开工程后,Debug版本能够正常编译且运行,但是切换至Release版本后,虽然能够正常编译,但是运行时报错 插件“fluentuiplugin.dll”使用了不兼容的 Qt 库。(不能混合使用库的调试版本和发布版本。)

image

Qt版本:Qt 6.5.1 MSVC版本:msvc2022_pe_64bit Cmake版本:3.27.0-rc3

请问在切换至Release版本编译前是否还需要进行其他的操作? 望回复,谢谢!

zhuzichu520 commented 1 year ago

可以把Release与Debug都编译编译。这样D:\Qt\6.5.1\msvc2019_64\qml\FluentUI目录下就会有fluentuiplugind.dll与fluentuiplugin.dll两个动态库

CyclamenY commented 1 year ago

谢谢您的回复!

我在Qt中重新切换至debug编译了一次,但是在Qt文件夹中只有fluentuiplugin.dll而并没有fluentuiplugind.dll文件

image

同时我在Qt的Debug log中发现即使是debug编译过程中,程序依然是链接了fluentuiplugin.dll动态库,这是否说明我的cmake配置选项配置错误呢?

image
mentalfl0w commented 1 year ago

把Qt文件夹下的FluentUI相关文件都清除,然后把cmake的build文件夹也删掉,CMakeList的缓存也删掉,做一次纯净的Release编译试试?

CyclamenY commented 1 year ago

把Qt文件夹下的FluentUI相关文件都清除,然后把cmake的build文件夹也删掉,CMakeList的缓存也删掉,做一次纯净的Release编译试试?

谢谢回复,根据提示操作后问题依旧 release的编译log中发现了不少warning,这里附上release的编译log,希望有帮助 [369/632 23.0/sec] Building CXX object framelesshelper\src\core\CMakeFiles\FramelessHelperCore.dir\utils.cpp.obj E:\data\code\qt\FluentUI\framelesshelper\src\core\utils.cpp(48): warning C4505: “wangwenx190::FramelessHelper::lcUtilsCommon”: 已删除具有内部链接的未引用函数 与上述warning类似的在log中还有很多,具体可见附件中的log文件 release.log

mentalfl0w commented 1 year ago

把Qt文件夹下的FluentUI相关文件都清除,然后把cmake的build文件夹也删掉,CMakeList的缓存也删掉,做一次纯净的Release编译试试?

谢谢回复,根据提示操作后问题依旧 release的编译log中发现了不少warning,这里附上release的编译log,希望有帮助 [369/632 23.0/sec] Building CXX object framelesshelper\src\core\CMakeFiles\FramelessHelperCore.dir\utils.cpp.obj E:\data\code\qt\FluentUI\framelesshelper\src\core\utils.cpp(48): warning C4505: “wangwenx190::FramelessHelper::lcUtilsCommon”: 已删除具有内部链接的未引用函数 与上述warning类似的在log中还有很多,具体可见附件中的log文件 release.log

这个warning来自framelesshelper,没有啥影响,看日志没啥其他的问题,很奇怪

mentalfl0w commented 1 year ago

实在不行的话,试试Qt 6.2.4 LTS版本吧,我最近测试发现Qt 6.5以上的版本有点奇奇怪怪的问题,Qt 6.2.4相比来说更稳定。

CyclamenY commented 1 year ago

实在不行的话,试试Qt 6.2.4 LTS版本吧,我最近测试发现Qt 6.5以上的版本有点奇奇怪怪的问题,Qt 6.2.4相比来说更稳定。

重新编译安装了Qt6.2.4,注释了"PLUGIN_TARGET fluentuiplugin"后确实能够生成fluentuipluginplugin.dll和fluentuiplugin.dll,但是debug编译时链接到了fluentuiplugin.dll debug.log

mentalfl0w commented 1 year ago

这样链接是正常的,试试不注释PLUGIN_TARGET fluentuiplugin然后再进行RELEASE编译呢?我这边Qt 6.2.4这样操作是正常的。

CyclamenY commented 1 year ago

这样链接是正常的,试试不注释PLUGIN_TARGET fluentuiplugin然后再进行RELEASE编译呢?我这边Qt 6.2.4这样操作是正常的。

release确实正常了,但是切换回Debug重新编译又会报“使用了不兼容的 Qt 库”;即便是清除构建,重新编译以后

mentalfl0w commented 1 year ago

这个是正常的,微软的msvc要求比较严格,换成mingw预编译的Qt就可以了。

CyclamenY commented 1 year ago

更换为mingw版本后问题消失,谢谢耐心解答!

这个是正常的,微软的msvc要求比较严格,换成mingw预编译的Qt就可以了。