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
|
产品答疑