DLL文件的使用

DLL文件就是动态库文件,搞个例子就懂了,搞两个工程,一个工程生成DLL,一个工程调用DLL。

生成DLL工程

打开Visual Studio 2019,版本高了可能不行,创建新项目。

搜索DLL,动态链接库。

给项目起个名字

生成DLL的工程的源文件,DllMain本来是有的,我们不用管它,在下面加个Add_Func,。

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#define MYDLL_EXPORTS
#include "MakeDll.h"
#include "pch.h"

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

DLLTYPE int Add_Func(int a, int b) {
    return (a + b);
}

加一个头文件MakeDLL.h

#ifndef MAKEDLL_H
#define MAKEDLL_H
#pragma once

#ifdef MYDLL_EXPORTS
#define DLLTYPE extern "C" __declspec(dllexport)
#else
#define DLLTYPE __declspec(dllimport)
#endif

//声明自定义函数
DLLTYPE int Add_Func(int a, int b);

#endif 
#pragma once

对着工程右键->重新生成,下面就会提示把DLL文件生成到了哪里。

调用DLL工程

新建一个控制台工程

起名字

将生成DLL工程生成的DLL文件复制到调用DLL工程的路径下

这个工程就只需要一个源文件就行

// CallDLL.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <Windows.h>
#include <tchar.h>

using namespace std;

int main()
{
	HINSTANCE handle = LoadLibrary(_T("MakeDLL.dll"));//加载dll ,需要加上头文件tchar.h并在调用时加上_T 由句柄指向dll文件
	cout << "Dll Adddr:" << handle << endl;
	if (handle)
	{
		typedef int(*Add_API_Type) (int, int);
		Add_API_Type add_API_Point = (Add_API_Type)GetProcAddress(handle, "Add_Func"); //GetProcAddress获取dll中的Add_Func函数,用add_API_Point指向函数它
		cout << "dll 函数的句柄返回值:" << add_API_Point << endl;//打印dll的函数句柄地址值,不为0就说明调用成功
		if (add_API_Point)
		{
			int result = (*add_API_Point)(10, 50); 
			cout << "结果:" << result << endl;
			FreeLibrary(handle); //释放句柄
		}
	}
	return 0;
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

ctrl + F5 执行成功

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃鱼的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值