手工加载DLL

本文介绍了如何通过extern C声明C函数以便在DLL中找到函数地址,并演示了如何在不依赖.h和.lib文件的情况下调用DLL中的函数。此外,还说明了在调用DLL时项目属性设置的重要性。

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

1.为了能找到dll的函数地址,生成dll时需要将其中的函数声明为C函数(extern "C"):

#ifndef __MYDLL_H
#define	__MYDLL_H

#ifdef MYDLL_EXPORTS
#define MYDLL __declspec(dllexport)
#else
#define MYDLL __declspec(dllimport)
#endif

extern "C" MYDLL int Add(int a, int b);

#endif

 

2.调用dll中的函数时,只需要*dll文件,不需要.h和.lib

#include <stdio.h>

#include <WinSock2.h>
#include <Windows.h>

int main()
{
	HINSTANCE handle = LoadLibrary("DLL_07.dll");
	if (handle)
	{
		//定义要找的函数原型
		typedef int (*DLL_FUNC_ADD) (int,int);

		//找到目标函数的地址
		DLL_FUNC_ADD dll_func_add = (DLL_FUNC_ADD)GetProcAddress(handle,"Add");
		if (dll_func_add)
		{
		//调用该函数
		int result = dll_func_add(10,11);
		printf("result:%d\n",result);
		}
		//卸载
		FreeLibrary(handle);
	}
	
	return 0;
}

3.调用dll的项目属性->常规->字符集->使用多字节字符集。

 

Demo:百度云盘(13207134391)

    DLL_07

    DLL_07_APP

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值