C语言:动态DLL生成与调用

动态库 DLL:

#include<Windows.h>

//导出变量
_declspec(dllexport) int num = 100;

//导出函数
_declspec(dllexport) void run()
{
	MessageBoxA(0, "TEST", "DLL", 0);
}

修改项目属性:
在这里插入图片描述
注意字符集
在这里插入图片描述
调用:

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>

//声明函数指针
void (*vptr)();

int* p1;

void main()
{
	//加载句柄
	HINSTANCE hin = LoadLibrary("TestDLL.dll"); //加载动态DLL ,返回句柄

	if (hin != NULL)
	{
		p1 = (int*)GetProcAddress(hin, "num");//查找DLL中的变量
		if (p1 != NULL)
		{
			printf("变量值:%d\n", *p1);
		}

		vptr = (void (*)())GetProcAddress(hin, "run");//查找DLL中的run函数
		if (vptr != NULL)
		{
			vptr();//调用函数
		}

		FreeLibrary(hin);//释放动态DLL
	}
	else
	{
		printf("动态库文件加载失败!\n");
	}
	

	system("pause");
}

为了兼容性字符集最好设置与DLL一致。
在这里插入图片描述
执行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值