CTK Plugins Framework编译成功,debug模式运行报错解决方案

最近项目需要从头搭建一个软件框架,在网上看到推荐CTK Plugins Framework这个插件框架,感觉很适合我这个项目,于是在网上开始搜寻教程。关于CTK的介绍,网上其实挺多的,随便一搜就能搜到,这里就不重复介绍了。

推荐一个编译的教程:编译教程
推荐一个实例仓库,我也在跟着这个仓库的项目学习:项目仓库

遇到的错误

在网上寻找教程时,看到有各种各样的版本搭配,比如Qt5.14 + vs2017、Qt5.12 + vs2015等等(大概印象,具体可能不是这个搭配,勿参考)。我也没想那么多,选择了Qt 5.15.4 + vs2019这个搭配来编译链接库。整个编译的过程还挺顺利,我分别编译了debug版本和release版本的动态链接库,但是我写了一个测试程序(如下)来加载这个库时,就遇到问题了。

QCoreApplication app(argc, argv);

ctkPluginFrameworkFactory frameWorkFactory;
QSharedPointer<ctkPluginFramework> framework = frameWorkFactory.getFramework();
try {
    // 初始化并启动插件框架
    framework->init();
    framework->start();
    qDebug() << "CTK Plugin Framework start ...";
} catch (const ctkPluginException &e) {
    qDebug() << "Failed to initialize the plugin framework: " << e.what();
    qDebug() << e.message() << e.getType();
    return -1;
}

在release下能正常运行,在debug模式下,执行到 framework->init(); 处时就会报错,大概的错误信息就是:

“底层发现一个错误,程序无法继续执行   Exception at 0x7ff9de62cf19, code: 0xe06d7363: C++ exception, flags=0x1 (execution cannot be continued)"

解决思路

当在网上发现大家没有讨论CTK遇到的这个问题,我就开始怀疑是编译的配置可能不对,于是我又尝试了Qt5.12.11 + vs2017的配置,发现问题仍然存在,但是又存在一点点不一样。这次执行到framework->init(); 处时,程序没有弹出错误,但是无法继续往下运行,从堆栈信息来看,程序执行了init函数后,直接退出main函数了。

不同的qt和vs版本造成的现象竟然不同,那可能就是编译配置不对。于是我考虑用教程里的版本来试试,最终我的版本搭配为Qt5.14.0+vs2017,实测最终debug和release下都可以正常调用该库。

总结

我也没想到QT和vs版本的搭配不对会产生这样的问题,但让我不疑惑的是官方和网友们都没有提到这个问题,难道就我遇到这个问题了。

不过好在现在问题解决了,可以开始专心研究一下这个框架。后续也有可能继续更新关于学习CTK方面的文章,可以点个关注,一起讨论。

希望我的回答和解决思路能给您提供一点帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值