大佬教程收集整理的这篇文章主要介绍了c – 初始化静态库中嵌入的qt资源,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <QAbstractButton> namespace { struct StaticLibInitializer { StaticLibInitializer() { Q_INIT_resourcE(qtwidgets_custom_resources); } }; StaticLibInitializer staticLibInitializer; } // ... widget code ....
而不是我的第一种方法,我已经在静态库项目中创建了单独的init.cpp文件,其中包含初始化代码(以避免在每个.cpp文件中包含初始化代码),但这并不奏效.@H_450_6@
为什么这不行?@H_450_6@
您不能移动您的代码,以初始化静态对象超出翻译单位(您可以将其作为源文件读取)使用这些静态对象.不是你做的那样如果要使用您正在使用的方案来初始化这些静态对象,而不是仅将声明移动到init.hpp头,而是保留静态StaticLibInitializer staticLibInitializer;在每个使用静态对象的文件中.
以上建议假定每个小部件只使用自己的资源.如果你有一个小部件的资源被另一个小部件使用的情况,你将再次运行到静态初始化阶段fiasco.您可以使用这样的代码来管理这种情况@H_450_6@
StaticLibInitializer { void initialize() { static Q_INIT_resourcE(qtwidgets_custom_resources); } StaticLibInitializer() { initialize(); } }
以确保StaticLibInitializer的乘法实例将初始化给定资源一次,然后为您将在给定的翻译单元中使用的每个资源实例化StaticLibInitializer.@H_450_6@
以上是大佬教程为你收集整理的c – 初始化静态库中嵌入的qt资源全部内容,希望文章能够帮你解决c – 初始化静态库中嵌入的qt资源所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。