VS2015动态库编程之导出变量

本文介绍如何在Visual Studio 2015中通过定义和导出全局变量实现跨程序的数据共享,并展示了如何在调用动态链接库的应用程序中访问和修改这些变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章相关视频教程下载地址http://pan.baidu.com/s/1slK2Hat

在动态库中定义的全局变量,可以在调用该动态库的程序中进行访问和修改。

1 在动态库中定义导出变量

VS2015动态库之入口函数”中创建的DLL程序的基础上,添加导出变量。

1.1 全局变量的定义

dllmain.cpp源文件的起始位置处定义一个全局变量

unsigned int dllGlobalVar = 0;

1.2 全局变量的赋值

dllMain()入口函数中,对其进行赋值:

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

dllGlobalVar = 100;

std::cout << "DLL_PROCESS_ATTACH.\n";

break;

1.3 全局变量的导出声明

为程序添加一个名为DLL_Variant_Test.def的定义文件,在该文将中将dllGlobalVar声明为导出变量

LIBRARY DLL_Variant_Test

EXPORTS

dllGlobalVar DATA

2 在调用动态库的程序中使用该变量

VS2015动态库之入口函数”中创建的调用动态库程序的基础上,添加对该变量的使用。

2.1 数据类型的定义

程序要访问动态库中的变量,即要获取该变量在动态库中的地址(指针)。dllGlobalVar的类型是unsigned int,因此其地址应该为unsigned int*。因此,在程序中首先有如下代码

typedef unsigned int* PUINT;

2.2 变量地址的获取

通过GetProcAddress()函数获取该变量的地址

PUINT dllGlobalVar = (PUINT)GetProcAddress(hinstLib, "dllGlobalVar");

该行代码应该放在LoadLibrary()函数之后使用。

2.3 变量的访问及修改

在获取了dllGlobalVar变量的地址之后,可以直接对其进行访问或者对其进行修改。

cout<<*dllGlobalVar;

*dllGlobalVar = 200;

cout<<*dllGlobalVar;

以上代码中,第一次输出的值是100,第二次输出的值是200


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值