在DLL中仅初始化变量一次

Initialize variables only once in DLL

本文关键字:一次 变量 DLL 初始化      更新时间:2023-10-16

我有一个流程,该过程调用DLL几次。在DLL中,我有一些变量必须从XML文件初始化,它们的值将保持不变。为例,假设我的过程如下:

  1. 要求用户输入Name
  2. 要求用户输入Employee ID
  3. 调用DLL并读取XML文件的Company NameStreetCityZIP Code的值
  4. 生成报告。
  5. 从步骤1(循环)重复

问题:作为XML文件中定义的Company NameStreetCityZIP Code的值,因此没有意义在此中读取XML文件的每个dll dll的XML文件循环过程。我如何在第一次呼叫期间设置DLL中的变量并将其用于其余电话?

更新:,某些答案建议使用全局变量并在从XML文件读取后一次初始化它们,但不幸的是,在我的Process 中是不可能的。这是因为只有DLL在C 中,其余过程是使用另一个框架。但是,我可以从DLL提取值并分配到另一个框架的变量,但是此DLL是大项目的一部分,因此我不允许修改变量和主要项目的其他内容。这就是为什么我必须找到一个DLL维护自己的变量副本的方法。

创建一个读取XML文件的类,并在构造函数中使用XML文件的公司名称,街道,城市和邮政编码初始化成员变量。

创建此类的全局实例。现在在您的DLL中使用此类的全局实例。

关键字是 cache。:)我建议您从文件中读取值,然后将其存储(最好在地图中)以进行后续调用。

尽管可以使用全局变量解决此问题,但这种做法被广泛劝阻https://stackoverflow.com/a/19374253/1341515

您可以在DLL条目中首先读取XML文件的内容,并将其保存在全局变量中。每次您从DLL调用函数(步骤3)时,函数应从该全局变量读取数据。

使用Singleton类的使用帮助我初始化了一个变量(从XML读取)一次。我定义了必须从XML文件读取的变量,为单例类的成员变量。在为此Singleton类创建第一个对象实例的过程中,我读取XML文件并将值分配给相应的成员变量。由于,仅创建了一个对单例类的对象,因此,所有调用DLL的调用都使用变量的相同值(从XML读取)。