在DLL中仅初始化变量一次
Initialize variables only once in DLL
我有一个流程,该过程调用DLL几次。在DLL中,我有一些变量必须从XML文件初始化,它们的值将保持不变。为例,假设我的过程如下:
- 要求用户输入
Name
- 要求用户输入
Employee ID
- 调用DLL并读取XML文件的
Company Name
,Street
,City
和ZIP Code
的值 - 生成报告。
- 从步骤1(循环)重复
问题:作为XML文件中定义的Company Name
,Street
,City
和ZIP 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读取)。
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 如何一次删除"cmake -D"定义的所有变量?
- 仅在函数中设置静态变量一次
- 只设置一次方法中变量的值
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- C :用sizeof()operator在for for loop中增加一个int变量,只能工作一次
- X 变量在最后一次尝试简单猜谜游戏时发生变化,C++
- 在功能静态变量上调用Setter一次
- 确保我们仅一次和一次初始化每个变量
- 如何使结构一次只存储一个变量?C++
- 在DLL中仅初始化变量一次
- 具有两个变量的"for"循环,一个变量每次迭代递增,每隔一次迭代递增
- 这将是在将函数分配给变量或一次又一次地调用函数之间使用函数结果的最佳方式
- 如何在不使用静态变量的情况下从递归函数中只调用另一个函数一次
- 为什么比较两次 char 变量比比较一次短变量更快
- 在嵌套循环/循环不变量中检查一次
- cocos2d-x中变量的一次初始化
- 在递归函数中打印一次变量,该变量会随着每次递归而不断变化
- 是否可以每个类只传递一次变量,而不使其成为静态变量