1 用VC创建DLL动态连接库
1.1 创建dll项目
然后选择“一个空的dll工程”,然后点击“确定”便完成了“创建dll项目”的流程。
1.2 为dll项目编写源文件
新建两个文件:dllDemo.h, dllDemo.cpp
在头文件”dllDemo.h”中声明三个接口函数:
extern "C" _declspec(dllexport) int Sum(int a,int b);//加法函数
extern "C" _declspec(dllexport) int Max(int a, int b);//取较大值函数
extern "C" _declspec(dllexport) int Min(int a, int b);//取较小值函数
然后在“dllDemo.cpp”文件中实现三个接口函数:
#include "dllDemo.h"
extern "C" _declspec(dllexport) int Sum(int a, int b){
return a+b;
}
extern "C" _declspec(dllexport) int Max(int a, int b){
if(a>=b)
return a;
else
return b;
}
extern "C" _declspec(dllexport) int Min(int a, int b){
if(a>=b)
return b;
else
return a;
}
1.3 生成dll文件
编译源文件,如果没有出现错误提示,那么,在项目文件根目录的Debug文件夹内会生成一个dll文件“dllDemo.dll”。
2 DLL调用
2.1 用C++调用显式链接
新建一个Win32的控制台程序进行显式调用:
1. 新建“dllConsoleEvident”的Win32控制台程序项目
2. 新建cpp文件“dllConsoleEvident.cpp”
3. 将在第一节中,在Debug目录下编译生成的“dllDemo.dll”(显式调用时只需要这一个文件就够了)文件复制到“dllConsoleEvident”项目下的Debug文件夹根目录下
4. 在“dllConsoleEvident.cpp”文件中编写以下代码对dll中的函数进行显式调用
//动态加载DLL文件
#include <iostream.h>
#include<windows.h>
void main(void){
typedef int(*pMax)(int a,int b);//函数指针
typedef int(*pMin)(int a,int b);
pMax Max=NULL;
pMin Min=NULL;
HINSTANCE hDLL;
hDLL=LoadLibrary("dlldemo.dll");//加载动态链接库dlldemo.dll文件;
Max=(pMax)GetProcAddress(hDLL,"Max");
Min=(pMin)GetProcAddress(hDLL,"Min");
if (Max)//如果取出函数成功,则执行下面的语句
{
int A=Max(5,8);
cout<<"比较的结果为"<<A<<endl;
} else {
cout<<"比较的结果为"<<"max error"<<endl;
}
if (Min){
int B=Min(5,8);
cout<<"比较的结果为"<<B<<endl;
} else{
cout<<"比较的结果为"<<"min error"<<endl;
}
FreeLibrary(hDLL);//卸载MyDll.dll文件;
}
2.2 用C++隐式链接(Win32控制台程序)
新建一个Win32控制台程序演示静态调用
1. 利用向导新建“dllConsoleStaticDemo”的空工程
2. 将“dllDemo.dll”和“dllDemo.lib”文件复制到Debug目录下,并在项目中包含“dllDemo.lib”文件,否则会出现dll函数找不到的连接错误
3. 新建“dllConsoleStaticDemo.cpp”文件,并写入如下代码:
extern "C"_declspec(dllimport) int Sum(int a,int b);
extern "C"_declspec(dllimport) int Max(int a,int b);
extern "C"_declspec(dllimport) int Min(int a,int b);
#include <iostream.h>
void main(){
int c=Sum(4,5);
cout<<c<<endl;
c=Max(5,6);
cout<<c<<endl;
c=Min(5,6);
cout<<c<<endl;
cout<<"Hello,dllConsoleTest~!"<<endl;
}
分享到:
相关推荐
本篇文章将深入探讨“vc++ DLL应用实例”,通过分析描述中的“简易Dll调用实例”和标签中的“DLL使用、VS2005、VC++源码”,我们将详细讲解如何在VC++环境中创建和使用DLL。 首先,DLL的基本概念是:动态链接库是一...
总的来说,"VC++ DLL for Socket"项目是一个综合性的网络通信解决方案,通过VC++的DLL技术封装了Socket通信的复杂细节,使得其他应用程序可以方便地调用这些功能,实现高效的网络交互。对于学习和实践网络编程,尤其...
本示例着重介绍如何使用VC++来创建和使用DLL,以便与其他应用程序共享数据。 首先,我们需要理解VC++中的DLL项目类型。在Visual Studio中,你可以选择创建一个新的“Win32动态链接库(DLL)”项目。这将生成一个...
DLL文件本质上是包含可执行代码和数据的库,它可以通过导出函数接口供其他应用程序或DLL调用。在VC++中,我们通常使用`__declspec(dllexport)`和`__declspec(dllimport)`关键字来控制函数或类的导出和导入。当在DLL...
本资源集成了“VC++dll开发与系统编程”的实例,通过25个具体的项目,深入浅出地介绍了这两个关键领域的实践应用。 首先,让我们详细探讨DLL开发。DLL文件包含了可执行代码和数据,它们可以在运行时被多个进程加载...
本资料包“VC++DLL编程(附源码)”提供了深入浅出的DLL编程教程,通过PDF文本形式,详细讲解了DLL的基础概念、创建过程以及使用方法。 首先,DLL的核心概念是共享。在Windows操作系统中,DLL文件包含可由多个应用...
本教程将深入探讨如何使用VC++创建DLL以及如何显式加载DLL。 首先,我们来理解DLL的基本概念。DLL是一种可执行文件,它包含可由多个应用程序同时使用的函数和资源。这种共享机制减少了内存占用,简化了软件维护,并...
标题 "JNA调用VC++dll" 描述的是一个技术问题,涉及到Java Native Access (JNA)库在Java应用程序中如何调用由VC++编译的动态链接库(DLL)。这种技术允许Java代码与本地操作系统接口进行交互,扩展了Java的跨平台能力...
本项目就是这样一个示例,展示了如何使用Visual Studio 2010(VS2010)的VC++环境开发一个动态链接库(DLL),以便通过Java的Java Native Interface(JNI)进行调用。以下将详细介绍这个过程中的关键知识点。 1. **...
在VC++环境中,DLL(Dynamic Link Library)是一种可重用代码的库,它允许开发者将功能模块化,以便多个应用程序可以共享同一段代码。DLL文件不仅有助于减少内存占用,还能提高程序的性能和加载速度。当涉及到“继承...
首先,我们需要理解C#与VC++之间的互操作性,然后讨论如何创建和使用DLL,最后讲解如何在C#中调用这些DLL函数以实现进程保护。 一、C#与VC++的互操作性 C#和VC++虽然属于不同的编程语言,但两者都支持COM(组件...
本文将深入探讨VC++中如何进行DLL的开发与应用。 ### 1. DLL的创建 创建DLL主要分为以下几步: 1. **选择项目类型**:在Visual Studio中,新建一个项目,选择“Win32项目”,然后在向导中选择“动态库(DLL)”...
在Windows操作系统中,动态...总之,“VC++动态链接库(dll)编程深入浅出”这份资料将指导你全面了解和掌握VC++中创建和使用DLL的各种技巧和方法,通过实践应用,你将能够有效地利用DLL来提升你的软件开发效率和质量。
标题中的“DLL_Class.rar_Class Dll_VC++ dll_...8. 在其他MapGIS应用中测试和使用创建的DLL。 通过这个教程,开发者可以学习到如何利用C++和MapGIS的API来创建自己的功能模块,增强MapGIS的功能,解决特定的GIS问题。
在IT行业中,VC++DLL(动态链接库)是开发者经常使用的工具,特别是在Windows平台上的软件开发。DLL(Dynamic Link Library)文件是一种可被多个程序同时使用的代码和数据的集合,它能够有效地减少内存占用和提高...
在“vc++ dll注入api hook.zip”这个压缩包中,包含了实现这两种技术的相关源代码,如`apihijack.cpp`、`apihijack.h`以及测试程序`TestLauncher`和`TestDLL`。 首先,我们来理解DLL注入。DLL(动态链接库)注入是...
本示例主要探讨如何在.NET(以C#为例)中调用VC++编写的DLL,涉及的关键技术包括字符串处理、指针操作、结构传递以及数组操作。下面将详细解释这些知识点。 1. **字符串处理**: 在.NET中,字符串通常是Unicode的`...
这篇教程将深入讲解如何使用VC++进行DLL的编写与应用。 一、DLL的作用 1. 资源共享:DLL可以被多个进程同时调用,节省内存资源,提高程序运行效率。 2. 代码更新:当DLL中的函数或数据改变时,无需重新编译所有依赖...
VC++通过`#pragma comment(lib, "library.lib")`预处理器指令或`LoadLibrary`和`GetProcAddress`API函数来链接和调用DLL中的函数。 1. **创建DLL**: 创建一个VC++ DLL项目,选择相应的模板。在DLL的头文件中声明...