繁体   English   中英

在DLL中仅初始化一次变量

[英]Initialize variables only once in DLL

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

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

问题:由于在XML文件中定义的Company NameStreetCityZIP Code的值将保持不变,因此,在此循环过程中,对于此DLL的每次调用都没有读取XML文件的意义。 如何在首次调用期间在DLL中设置变量,并将其用于其余调用?

更新:由于一些答案建议使用全局变量,并在从XML文件读取后对其进行一次初始化, 但不幸的是,这在我的过程中是不可能的 由于这个原因,只有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读取)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM