今天做程序需要导出DLL中的一个全局指针,可是导出后只要一使用就会发生access violation,后来在网上找了找文章,原来是之前导入方法存在问题,下面把整个DLL导出导入全局函数的方法整理一下,作为记录。整个文章大部分参考http://www.pconline.com.cn/pcedu/empolder/gj/vc/0509/699672_7.html,这篇文章写的很不错,有兴趣的可以看看。
全局变量的导出 方法:
全局变量在DLL中的定义和使用方法与一般的程序设计是一样的。若要导出某全局变量,需要在.def文件的EXPORTS后添加:
变量名 CONSTANT //过时的方法
或
变量名 DATA //VC++提示的新方法
全局变量的导入 及使用 方法:
extern int dllGlobalVar;
printf("%d ", *(int*)dllGlobalVar);
*(int*)dllGl

本文介绍了DLL中导出和导入全局变量的方法,重点解析了使用全局变量时遇到的access violation问题。在导出时,可以通过.def文件的EXPORTS添加CONSTANT或DATA。而在导入时,需注意extern声明的是全局变量的地址,需要通过指针转换访问。推荐使用_declspec(dllimport)方式导入,以直接操作全局变量。

3325

被折叠的 条评论
为什么被折叠?



