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

动态库 DLL:

#include

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

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

修改项目属性:
C语言:动态DLL生成与调用_第1张图片
注意字符集
C语言:动态DLL生成与调用_第2张图片
调用:

#include
#include
#include

//声明函数指针
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一致。
C语言:动态DLL生成与调用_第3张图片
执行结果:

C语言:动态DLL生成与调用_第4张图片

你可能感兴趣的:(C语言基础资料)