ctk在windows上修改路径大小写不能加载相对路径的插件

本文讲述了在Windows环境中,由于路径大小写改变导致CTK框架加载插件失败的问题。在修改目录结构后,由于Windows不区分文件夹名大小写,导致了路径冲突。通过删除程序运行路径下的'plugindb/plugins.db'文件解决了这个问题。该文件可能保存了大小写敏感的路径信息,从而影响了CTK的插件加载。
摘要由CSDN通过智能技术生成

1. 问题描述

我们的项目中使用了ctk来安装某些需要相互调用的dll插件。
在Git仓库中存在一个项目代码的文件夹,例如叫:“abc/Abc”,生成的可执行文件也放在这个路径的子路径下面。
为了更形象提现,例如在路径下有一个文件叫"A.txt",“abc”文件夹在“D:/”下,文件路径如下所示:

D:-------------------------------
    |
    abc--------------------------
        |
        Abc-----------------------
            |
            A.txt

在使用的过程中,我发现有一次解压之后的路径是“abc/abc/Abc”。如下所示:

D:-------------------------------
    |
    abc-------------------------- // 第一层abc目录
        |
       abc-------------------------- // 第二层abc目录
            |
            Abc-----------------------
                |
                A.txt

我想恢复成原来的路径,就将“abc”(第一层)文件夹中的“abc”(第二层)拷贝到第一层的同目录,这样导致了一个问题,windows是不识别大小写的,目录结构就成了如下所示:

D:-------------------------------
    |
    abc--------------------------
        |
        abc-----------------------
            |
            A.txt

最开始我没有发现路径已经从“abc/Abc”变成了"abc/abc",这时候编译并运行了我的程序,执行也没有问题。
当我发现路径不正确时候,我就将"abc/abc"直接修改成了“abc/Abc”,再次运行程序的时候,发现ctk加载插件失败。

2. 分析与解决

已经确定了传递给ctk框架的路径的url是正确的,那么问题就可能出在ctk上面了。
我觉得可能是它在某些地方生成了一下缓存导致的,先查看了一下home路径下,没找到。然后在当前程序的运行路径下找到一个“plugindb/plugins.db”文件,这个文件的生成日期非常新,删除之后就能够正常运行并加载插件了。
之后使用文本编辑器打开这个文件,有很多乱码,但也能观察到很多可以阅读的字符串,发现原来小写的路径真的被这个文件记录了,确定就是这个文件的问题了。

3. 进一步分析

如果在windows上,已经运行过这个程序,修改路径的大小写也会导致上述描述的问题。

补充

ctk的错误日志是:

ctkPluginException: Failed to install plugin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值