liupfDlg .cpp:
#pragma comment(lib,"E:\\vs2005Project\\bin\\ Fun .lib")
extern int global_val ;
//下面就可以使用 global_val
C liupf Dlg::OnBnClickeon1()
int yyy = *(int*) global_val ;

特别要注意的是用extern int global_val 声明所导入的并不是DLL中全局变量本身,而是其地址,应用程序必须通过强制指针转换来使用DLL中的全局变量。这一点,从*(int*) global_val 可以看出。因此在采用这种方式引用DLL全局变量时,千万不要进行这样的赋值操作: global_val = 9; 其结果是 global_val 指针的内容发生变化,程序中以后再也引用不到DLL中的全局变量了。

还有另外一种方法导入:

#pragma comment(lib,"E:\\vs2005Project\\bin\\ Fun .lib")

extern int _declspec(dllimport) global_val ; //用_declspec(dllimport)导入

通过_declspec(dllimport)方式导入的就是DLL中全局变量本身而不再是其地址了,
global_val = 1; //这里就可以直接使用, 无须进行强制指针转换
但这种方式,我没成功,编译一直报错!

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑