From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



DLL 中的全局变量的使用空间是什么?



主要软件:
主要软件版本: 7.0
主要软件修正版本: 7.0
次要软件: N/A

问题:

我需要在两个或者更多应用程序之间传输数据或者通信。在CVI中创建了一个DLL,里面包含了一个或者多个全局变量。我希望在一个应用程序往全局变量中写数据,然后在另外一个应用程序中把数据读出来。为什么这样不行呢?



解答:

CVI环境下创建的DLL中的默认使用空间与应用程序中声明的变量的使用空间相同。DLL中的全局变量对于每个调用这个DLL的进程是全局的。也就是说,每个调用该DLL的应用程序在堆栈中拥有该变量的一个副本。所以,DLL中的全局变量不能用来在不同的应用程序中传输数据。可以用于多个应用程序通信的方式包括:TCP/IP, Datasocket, 与文件I/O.

注意:DLL能够使用文件映射来分配不同的进程的内存空间。但是,这个并不是DLL的默认行为,并且需要大量额外的编程。可以参考下面的微软链接来获取关于这方面以及DLL数据的更多信息。



相关链接: MSDN Dynamic Link Library (DLL) data
NI Developer Zone: Datasocket Transfer Protocol (DSTP) Overview

附件:





报告日期: 07/20/2004
最近更新: 02/27/2008
文档编号: 3BJFS2FQ