导入插件报“找不到模块”

转自:http://blog.youkuaiyun.com/tinyhum3d/article/details/7061178


很多时候我们会碰到max加载插件的时候会出现error 126错误,也就是找不到相关的模块。出现这种错误的时候,max还没有能够呼叫到我们写的相关DLL的入口函数,因此不适合用我们调试插件代码的方式。这里我们从根本上来看一下这个错误,继而来用相关的工具来解决此问题。


错误中的找不到模块(如果是英文版,则是module),根本上来说是找不到一定的dll文件。原理上,我们写的每个插件本身是一个dll,在链接器链接代码的时候,写进不少这个dll需要哪些其他的dll来伴随运行的信息。因此,相关的加载模块会在程序(操作系统提供相应API)启动的过程中扫描系统路径和相关的用户路径下是否有该dll需要的其他支撑dll(模块),如果有,则加载dll成功,否则,则加载失败。


从这个原理上来讲,max启动失败必定是发现加载我们的插件失败,因此而报错。因此,我们首先知道是哪个DLL缺失了。可惜的是,max并不告诉我们究竟是缺失哪个DLL。那么剩下的问题就是通过相应的方式找到缺了哪个DLL。当然,缺失的原因也有两种,一种是物理文件不存在,就是整个硬盘上就没有相应的dll;另外一种是存在相应的dll,但是因为路径不对,所以,系统程序没有办法找到。不管如何,我们需要首先来定位相应缺失的是什么。


这里有个工具,工具名字叫Dependency Walker,这个工具能打开我们的模块文件,然后查询相关的依赖信息。用法很简单,File | Open,找到我们的插件文件打开就可以。如下界面:




看上图,所有的被Dependicy Walker打上问号的可能是有问题的。注意这里我说的是可能有问题,因为这个软件使用的工作目录等信息决定了它报出的错误信息的相对正确性。所以,不是每个问号都是真的有问题。但是,有问题的dll(缺失的dll)一定包含在问号列表之中。因此,这个软件非常有用的地方是,能帮我们列出模块,并缩小模块的范围。


关于工具就这么多,此工具足够了。


如果遇到此类问题,解决方式就相对简单了。运行dependency walker,看一下这个dll需要的相关模块。定位出哪个模块可能路径有问题,或者是缺失。然后解决这个问题就可以。解了这个问题后,剩下的问题就可以用调试器解决。对于开发人员来说,“源码之前了无秘密”,到调试器里就是个人造化了。 

### 关于 IntelliJ IDEA 模块丢失的解决方案 当遇到 IntelliJ IDEA 的模块丢失问题时,可以尝试以下方法解决问题: #### 方法一:重新导入项目 如果发现项目的某些模块丢失,可能是由于配置文件损坏或缓存问题引起的。可以通过删除 `.idea` 文件夹以及 `*.iml` 文件并重新导入项目来修复此问题[^1]。 ```bash rm -rf ./.idea/ find . -name "*.iml" -exec rm {} \; ``` 完成上述操作后,在 IntelliJ IDEA 中选择 **File → Open** 并重新打开项目的根目录。 --- #### 方法二:手动恢复模块 对于特定模块缺失的情况,可以在 **Project Structure (Ctrl+Alt+Shift+S)** 对话框中检查和添加模块: - 打开 **Modules** 面板。 - 如果缺少某个模块,则点击左上角的加号按钮 (**Add Module**) 来重新引入该模块。 - 确保模块路径设置正确,并指定其依赖项和其他必要属性[^2]。 --- #### 方法三:清理缓存并重启 IDE 有时,IDE 缓存可能导致不一致的行为。执行以下步骤可清除缓存: - 转到菜单栏中的 **File → Invalidate Caches / Restart…** - 勾选选项 **Invalidate and Restart** 后确认操作。 这一步骤会强制 IntelliJ IDEA 清理内部状态数据并刷新索引。 --- #### 方法四:验证 SDK 和工具链版本兼容性 确保所使用的 Android SDK 版本与 IntelliJ IDEA 支持的范围匹配。特别是较旧版(如 IDEA 12),可能需要更新至更高版本才能支持最新功能或插件。建议升级到最新的稳定版本以获得更好的体验和支持。 --- #### 方法五:调整构建脚本 如果是基于 Gradle 构建的项目,需仔细核对 `build.gradle` 文件的内容是否存在问题。例如,确保如下字段定义无误: ```groovy android { compileSdkVersion 30 defaultConfig { minSdkVersion 21 targetSdkVersion 30 } } ``` 保存更改之后同步项目 (`Sync Now`) 可能有助于解决潜在错误。 --- ### 注意事项 以上提到的方法适用于不同场景下的模块丢失情况。具体实施前应先备份整个工作区以防意外损失重要资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值