`
ladymaidu
  • 浏览: 679244 次
文章分类
社区版块
存档分类
最新评论

使用控制台程序测试DLL依赖

 
阅读更多

作者:朱金灿<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

来源:http://blog.csdn.net/clever101/

使用VC 6.0Depends工具打开DLL可以让你知道该DLL依赖于哪些DLL。但是很多时候加载DLL失败的原因是间接的,比如说a.dll依赖于b.dllc.dlld.dll,你的当前目录下都有b.dllc.dlld.dll,但是加载a.dll就是失败,这是为什么呢?原因是加载b.dllc.dlld.dll中的一个或多个失败了,于是你有得用Depends工具打开b.dllc.dlld.dll,看看它们依赖于哪些DLL。这样做你会感觉很累,效率也不高。有没有简单的方法呢?我想到的一个是使用控制台程序进行测试。就是在当前工作目录下建一个控制台工程,示例代码如下:

  1. int_tmain(intargc,_TCHAR*argv[])
  2. {
  3. HINSTANCEhinstLib;
  4. hinstLib=LoadLibrary("D://otPlatform//Release//rsca//otBestExtract.dll");
  5. if(hinstLib==NULL)
  6. {
  7. LPVOIDlpMsgBuf;
  8. FormatMessage(
  9. FORMAT_MESSAGE_ALLOCATE_BUFFER|
  10. FORMAT_MESSAGE_FROM_SYSTEM|
  11. FORMAT_MESSAGE_IGNORE_INSERTS,
  12. NULL,
  13. GetLastError(),
  14. MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),//Defaultlanguage
  15. (LPTSTR)&lpMsgBuf,
  16. 0,
  17. NULL
  18. );
  19. //ProcessanyinsertsinlpMsgBuf.
  20. //...
  21. //Displaythestring.
  22. MessageBox(NULL,(LPCTSTR)lpMsgBuf,"Error",MB_OK|MB_ICONINFORMATION);
  23. //Freethebuffer.
  24. LocalFree(lpMsgBuf);
  25. }
  26. return0;
  27. }

运行该程序,程序就会告诉你缺失了哪个依赖DLL了。

分享到:
评论

相关推荐

    Matlab2016a和VS2013混合Dll编程步骤总结

    1. 从Matlab导出.m文件为Dll文件 Step1将Matlab工作...Step6新建一个Win32控制台应用程序工程自己命名比如然后将for_testing文件中 的 .h.lib和 .dll文件拷到新建应用程序下和.cpp文件放在一起如下图

    FileHasher:创建并比较.exe和.dll文件的哈希值以检测更新

    FileHasher ... 这些测量是使用控制台文件的发行版完成的,GUI会变慢(更多线程,同步等)。 档案大小(KB) 运行时间(毫秒) 14847574 54654 5186093 19142 3770744 13941 1039630 3833 431357

    精通Windows.API-函数、接口、编程实例.pdf

    6.2.2 编写控制台程序和图形用户界面应用程序 158 6.2.3 获取和设置环境变量 158 6.3 线程、纤程 162 6.3.1 创建线程、退出线程、获取线程信息 162 6.3.2 挂起、恢复、切换、终止线程 164 6.3.3 创建远程...

    精通WindowsAPI 函数 接口 编程实例

    6.2.2 编写控制台程序和图形用户界面应用程序 158 6.2.3 获取和设置环境变量 158 6.3 线程、纤程 162 6.3.1 创建线程、退出线程、获取线程信息 162 6.3.2 挂起、恢复、切换、终止线程 164 6.3.3 创建远程...

    易语言程序免安装版下载

     静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和...

    java8集合源码-Frequent:用于多通道音频流的ASIO频谱分析仪

    由于该项目主要依赖于jasiohost库,而后者又使用其预编译的.dll文件作为库,因此该应用程序目前(以及在可预见的未来)只能在 Windows 机器上运行。 依赖关系 JasioHost库作为底层 ASIO 库Fork from ,修复了 DANTE ...

    eclipse 开发c/c++

    该工具是一组可免费获取、自由分发的特定于 Windows 的头文件和导入库,这些头文件和导入库与 GNU 工具集(它们允许您生成不依赖于任何第三方 DLL 的本机 Windows 程序)结合在一起。 如果您想要创建与 POSIX 兼容...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    react-ecommerce:Project Belajar Membuat网站Aplikasi电子商务Dengan React JS,蚂蚁设计,DLL

    您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。 npm run build 构建生产到应用程序build文件夹。 它在生产模式下正确捆绑了React,并优化了...

    ubox

    您还将在控制台中看到任何棉绒错误。yarn test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。yarn build 构建生产到应用程序build文件夹。 它在生产模式下正确捆绑了React,并优化了构建以...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 12 1.4.5 64位虚拟机 / 13 1.5 实战:自己编译JDK / 13 1.5.1 获取JDK源码 / 13 1.5.2 系统需求 / 14 1.5.3 构建编译环境 / 15 1.5.4 准备依赖项 / 17 1.5.5 进行编译 / 18 1.6 本章小结 / 21 第二部分 ...

Global site tag (gtag.js) - Google Analytics