动态库 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一致。
执行结果: