DLL定义的全局变量可以被调用进程访问;DLL也可以访问调用进程的全局数据
1、在dll的project中的cpp文件中添加一个全局变量。
如:在dynamic.cpp中
#include "stdafx.h"
#include "dynamic.h"
int dllGlobalVar;
int __declspec(dllexport) add(int x, int y)
{
return x - y;
}
2、在dynamic.h中
#ifndef DYNAMIC_H
#define DYNAMIC_H
extern int dllGlobalVar;
extern "C" int __declspec(dllexport) add(int,int);
#endif
在此我们声明了全局变量dllGlobalVar,在cpp文件中定义了dllGlobalVar变量。
3、我们在DllMain函数中对dllGlobalVar进行初始化:
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
dllGlobalVar = 100;
printf("DLL_PROCESS_ATTACH\n");
break;
case DLL_THREAD_ATTACH:
printf("DLL_THREAD_ATTACH\n");
break;
case DLL_THREAD_DETACH:
printf("DLL_THREAD_DETACH\n");
break;
case DLL_PROCESS_DETACH:
printf("DLL_PROCESS_DETACH\n");
break;
}
4、在另一工程中调用dll中的变量