作者:朱金灿<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
来源:http://blog.csdn.net/clever101/
使用VC 6.0的Depends工具打开DLL可以让你知道该DLL依赖于哪些DLL。但是很多时候加载DLL失败的原因是间接的,比如说a.dll依赖于b.dll、c.dll、d.dll,你的当前目录下都有b.dll、c.dll、d.dll,但是加载a.dll就是失败,这是为什么呢?原因是加载b.dll、c.dll、d.dll中的一个或多个失败了,于是你有得用Depends工具打开b.dll、c.dll、d.dll,看看它们依赖于哪些DLL。这样做你会感觉很累,效率也不高。有没有简单的方法呢?我想到的一个是使用控制台程序进行测试。就是在当前工作目录下建一个控制台工程,示例代码如下:
-
int_tmain(intargc,_TCHAR*argv[])
- {
-
HINSTANCEhinstLib;
-
hinstLib=LoadLibrary("D://otPlatform//Release//rsca//otBestExtract.dll");
-
if(hinstLib==NULL)
- {
-
LPVOIDlpMsgBuf;
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER|
- FORMAT_MESSAGE_FROM_SYSTEM|
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
-
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
-
(LPTSTR)&lpMsgBuf,
- 0,
- NULL
- );
-
-
-
-
MessageBox(NULL,(LPCTSTR)lpMsgBuf,"Error",MB_OK|MB_ICONINFORMATION);
-
- LocalFree(lpMsgBuf);
- }
-
return0;
- }
运行该程序,程序就会告诉你缺失了哪个依赖DLL了。
分享到:
相关推荐
通过这种方式,控制台程序可以利用.NET Core的依赖注入功能,使得代码更易于测试和维护。当需要更换或扩展服务实现时,只需更新服务注册,而无需修改调用这些服务的代码。此外,依赖注入还有助于促进代码的解耦,...
《天龙八部控制台DLL源码解析》 在编程领域,DLL(Dynamic Link Library)是一种重要的代码共享机制,广泛应用于Windows操作系统。DLL文件包含了可执行代码和数据,可供多个程序同时调用,以实现功能模块化和代码...
在Microsoft Visual Studio (VS) 中生成C++动态链接库(DLL)是一项常见的任务,它允许开发者创建可重用的代码模块,供其他应用程序在运行时动态加载和使用。DLL可以减少内存消耗,因为多个程序可以共享同一份库的...
开发者鼓励对控制台程序感兴趣的或者正在开发控制台应用的人使用并测试,这可能是一个开源或共享的项目,希望通过社区的反馈来修复这些问题并改进程序。 标签“进阶教程源码”表明这个压缩包可能包含了一个进阶教学...
2. **链接DLL**:在控制台应用程序的项目设置中,添加DLL项目的.lib文件到“输入”部分的“附加依赖项”。这样,编译器会知道需要链接到DLL的实现。 3. **包含DLL头文件**:在控制台应用程序的源文件中,包含DLL的...
在Windows操作系统中,DLL(Dynamic Link Library)文件是一种共享库,包含了可被多个应用程序同时使用的代码和数据。DLL文件的使用可以节省内存、减少磁盘空间,并有助于代码重用。本教程将详细介绍如何将多个DLL...
- 使用Visual Studio等IDE,选择“Win32控制台应用程序”项目模板,并在配置属性中选择DLL作为输出类型。 - 定义导出函数和类,使用`__declspec(dllexport)`关键字标记,以便其他程序可以导入它们。 - 编写实现...
在编程领域,动态链接库(DLL)和静态链接库(LIB)是Windows操作系统中至关重要的组件,它们允许程序共享代码和资源,从而提高效率和内存使用。本测试案例基于Visual Studio 2015,详细介绍了如何生成DLL和LIB文件...
DLL的主要优点是可以被多个应用程序同时加载和使用,从而节省内存资源,提高运行效率。然而,这也意味着一旦DLL中存在bug,可能会影响到依赖它的所有应用程序。因此,掌握如何调试DLL,对于确保软件质量和稳定性具有...
标题中的“matlab代码生成转dll给...通过这种方式,开发者可以在MATLAB中利用其强大的数学和信号处理能力编写算法,然后通过DLL在LabVIEW这种更适合系统集成和测试的平台上使用,实现了跨平台和跨工具链的协同工作。
### DLL封装图文教程知识点解析 #### 一、DLL概述与作用 动态链接库(Dynamic Link Library,...此外,随着现代软件工程的发展,DLL封装的方式也在不断演变,例如使用更高级的库管理和依赖注入技术来简化这一过程。
在类型选择中,应选择"A DLL that exports some symbols",这样可以确保 DLL 中的函数对外可见,可供其他程序调用。在源文件(如 ZLTEST.cpp)中定义一个简单的函数,例如: ```cpp int fun(int x) { return x; } ...
确保选择“DLL”作为输出类型,而不是默认的“控制台应用程序”或“Windows应用程序”。 2. **编写代码**:在新创建的项目中,编写你需要的功能函数或类。DLL的核心功能就是这些可被其他程序调用的函数或类。 3. *...
5. **测试和使用DLL**:创建一个测试程序(通常是控制台应用),使用`__declspec(dllimport)`来引用DLL中的函数。编译并运行这个测试程序,确保DLL被正确加载并且函数调用成功。 在这个过程中,可能会遇到一些常见...
本教程将深入探讨如何使用Visual Studio 2010创建一个简单的DLL动态库,实现一个基本的加法功能,并在一个测试应用程序中调用这个功能。 首先,我们需要了解DLL的工作原理。DLL文件包含可执行代码和数据,这些资源...
C语言DLL(动态链接库)是Windows平台下...DLL的使用可以极大地提高代码复用性和程序效率,但同时也需要注意版本兼容性、依赖关系等问题。理解DLL的工作原理以及如何正确编写和调用是每个C语言开发者必备的技能之一。
4. **创建客户端工程**:创建一个新的Win32控制台应用程序或其他类型的项目,作为使用DLL的客户端。 5. **导入DLL**:在客户端工程中,使用`__declspec(dllimport)`关键字来导入DLL中的接口类。例如: ```cpp // ...
5. **控制台程序(Console Application)**:"TestComConsole"是一个纯文本界面的应用程序,不依赖于图形用户界面。在Windows中,这类程序通常用于测试和调试。在这个例子中,它同样用来调用FirstCom DLL,但使用的...
通过使用ILMerge或自定义的`AssemblyResolve`事件处理程序,我们可以将DLL内容嵌入到EXE中,生成一个独立的可执行文件,从而减少部署时的依赖问题。在VBDoNetDLLTest项目中,你可以看到如何在VB.NET环境中实现这一...
DLL(Dynamic Link Library)是Windows操作系统中的一个重要组成部分,它是一种可共享的代码库,允许多个应用程序同时使用同一段代码,从而节省内存并提高系统效率。本教程“VCDLL实例初学DLL好例子”旨在帮助初学者...