VS2010创建和调用动态链接库

本文介绍如何使用VS2010创建动态链接库(DLL),并实现简单的减法运算功能。此外,还详细讲解了如何在另一个项目中通过显式加载的方式调用该DLL中的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们开发一个产品的时候,我们并不想把源码公布给对方,除了给对方提供exe可执行文件外,我们还可以生成动态链接库,供程序调用,方便二次开发。

下面我将简单梳理一下如何创建和调用动态链接库,方便大家程序开发。

一、创建动态链接库

这里我们做个减法的例子,比如2-1=1。

1、使用VS2010创建一个win32项目,确定后选择dll选项,完成。

2、在头文件和源文件分别添加dy.h和dy.cpp文件,并在各个文件中添加以下代码

//dy.h文件
#ifndef DYNAMIC  
#define DYNAMIC  
  
extern "C" __declspec(dllexport)int sub(int a, int b);  
  
#endif
// dy.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "dy.h"  
  
int sub(int a, int b)  
{  
    return a-b;  
}

3、编译即可生成dy.dll和dy.lib

此处需要注意,dy.lib与静态库有本质的区别,他是引入库文件,保存的是dy.dll中导出的函数和变量的符号名,可用于隐式加载dll。

这样,我们就轻松地完成了dll文件的生成。

二、调用动态链接库

本博文主要分享显式加载。

1、创建一个空项目dy_test。

2、将dy.dll和dy.h文件复制到dy_test目录下。

3、在项目中添加dy.h文件,并创建dy_test.cpp文件

4、在dy_test文件添加以下代码

#include   
#include   
#include  
#include "dy.h"  
int main()  
{  
    HINSTANCE hDll=NULL;  
    typedef int(*PSUM)(int a,int b);  
    PSUM pSum;  
    hDll = LoadLibrary("dy.dll");  //LoadLibrary(将指定的可执行模块映射到调用进程的地址空间。
    //如果调用成功,LoadLibrary函数将返回所加载的那个模块的句柄。
    pSum = (PSUM)GetProcAddress(hDll,"sub");  //GetProcAddress获取dll导出函数的地址。
    //hDll是指定动态链接库模块的句柄,"sub"是一个指向常量的字符指针,指定dll导出函数的名字或函数的序号。
    printf("%d\n",pSum(2,1));  
    system("pause");  
    FreeLibrary(hDll);  
    return 0;  
}
5、编译运行得到结果,显然为1.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值