Max加载plugin的时候出现的error 126(找不到相关模块)解决
2011-12-11 15:49
357 查看
很多时候我们会碰到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需要的相关模块。定位出哪个模块可能路径有问题,或者是缺失。然后解决这个问题就可以。解了这个问题后,剩下的问题就可以用调试器解决。对于开发人员来说,“源码之前了无秘密”,到调试器里就是个人造化了。
错误中的找不到模块(如果是英文版,则是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需要的相关模块。定位出哪个模块可能路径有问题,或者是缺失。然后解决这个问题就可以。解了这个问题后,剩下的问题就可以用调试器解决。对于开发人员来说,“源码之前了无秘密”,到调试器里就是个人造化了。
相关文章推荐
- android的启动出现loadlibrary failed with error 126:找不到指定模块。怎么解决。
- Flex的模块加载图表控件出现Error #1009解决之道
- android studio运行出现失败,提示java jdk找不到,javaMaxHeapSize "4g" error 解决办法
- Spring 加载数据库连接驱动的时候出现找不到驱动类解决办法。 com.mchange.v2.c3p0.DriverManagerDataSource ensureDriverLoaded
- QTCreator 打不开,提示“loadlibrary failed with error 126:找不到指定模块”的解决办法
- php动态加载模块的时候出现PHP_FE_END’未声明(不在函数内) -----{error: ‘PHP_FE_END’ undeclared here (not in a function)}
- Rundll加载dll时出现问题 找不到指定模块解决办法
- loadlibrary failed with error 126:找不到指定模块 解决方法
- nodejs的npm安装模块时候报错:npm ERR! Error: CERT_NOT_YET_VALID的解决方法 - 包子博客 _ 关注互联网前端、开发、SEO、移动互联网应用技术
- Eclipse结合Maven出现[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin错误的解决方法
- 做LAMP安装Discuz时出现mysql_connect() 不支持 请检查 mysql 模块是否正确加载解决
- [Python3.5]解决安装一些模块时出现“error: Unable to find vcvarsall.bat”的错误
- eclipse编译出现错误: 找不到或无法加载主类的解决
- "无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。" —— 的解决方法
- Android-Android studio 出现 Error: NDK integration is deprecated in the current plugin. 问题解决
- Android-Android studio 出现 Error: NDK integration is deprecated in the current plugin. 问题解决
- 使用WebView加载数据出现找不到网页的问题之解决办法(转)
- matlab运行过程中出现找不到指定模块问题解决
- LINUX驱动学习:加载模块时出现Device or resource busy的解决方法
- Photoshop--loadlibrary failed with error 126:找不到指定模块