c++的dll导出全局变量
(2015-10-25 15:16:51)
标签:
文化 |
分类: c |
1.运行环境:
CFunApp::CFunApp()
{
global_val = 10;
//找到构造函数,在其中初始化global_val
}
int yyy =
*(int*) global_val;
//10
vs2005 debug Win32 ,MFC dll 工程和MFC exe工程(对话框)。
2.调用关系:
Fun.dll
导出全局变量int
global_val;
liupf.exe 调用Fun.dll 的int
global_val
3.步骤:
(1)Fun.dll(为了简单起见,不再新建.h和.cpp文件,就利用DLL工程自动生成的文件Fun.h 和Fun.cpp)
Fun.h
: extern
int global_val;
//声明全局变量global_val
Fun.cpp :
int global_val;
//定义全局变量global_val
Fun.def :
global_val CONSTANT
//导出全局变量global_val(也可以用DATA代替CONSTANT,但
//后面的liupf.exe会报错不知为何,所以暂时用旧版CONSTANT)
(2)liupf.exe
(同上为了简单起见,不再新建.h和.cpp文件,就利用EXE工程自动生成的文件liupfDlg.h 和liupfDlg.cpp)
liupfDlg.cpp:
#pragma comment(lib,"E:\\vs2005Project\\bin\\Fun.lib")
extern int global_val;
//导入
//下面就可以使用global_val
void
CliupfDlg::OnBnClickeon1()
{
}
特别要注意的是用extern
int
还有另外一种方法导入:
#pragma comment(lib,"E:\\vs2005Project\\bin\\Fun.lib")
extern int
_declspec(dllimport)
通过_declspec(dllimport)方式导入的就是DLL中全局变量本身而不再是其地址了,global_val= 1; //这里就可以直接使用,
无须进行强制指针转换
但这种方式,我没成功,编译一直报错!

加载中…