我有一个多次调用DLL的进程。在DLL中,我有一些必须从XML文件初始化的变量,它们的值将保持不变。 举个例子,假设我的流程如下:
Name
Employee ID
Company Name
,Street
,City
和ZIP Code
的值 问题:由于XML文件中定义的Company Name
,Street
,City
和ZIP Code
的值将保持不变,因此在这个循环进程中,每次调用此DLL都没有读取XML文件的意义。如何在第一次调用时在DLL中设置变量并将其用于其余的调用?
更新:由于某些答案建议使用全局变量并在从XML文件 读取后初始化它们,但不幸的是,在我的流程中无法实现 即可。这是因为只有DLL在C ++中,而其余的进程正在使用另一个框架。虽然,我可以从DLL中提取值并分配给另一个框架的变量,但这个DLL是大项目的一部分,我不允许修改变量和主项目的另一个东西。这就是为什么我必须找到一种方法,这个DLL维护自己的变量副本。
答案 0 :(得分:0)
创建一个类,该类读取XML文件并使用构造函数中的XML文件使用公司名称,街道,城市和邮政编码初始化成员变量。
创建此类的全局实例。现在在DLL的函数中使用此类的全局实例。
答案 1 :(得分:0)
关键字为cache
。 :)
我建议你从文件中读取值,然后将它们存储起来(最好是在地图中),以便后续调用。
尽管可以使用全局变量解决此问题,但我们普遍不鼓励这种做法https://stackoverflow.com/a/19374253/1341515
答案 2 :(得分:0)
您可以首先在DLL Entry中读取XML文件的内容,并将其保存在全局变量中。每次从Dll调用函数时(步骤3),函数都应该从该全局变量中读取数据。
答案 3 :(得分:0)
使用Singleton类只帮助我初始化变量(从XML读取)一次。我将必须从XML文件中读取的变量定义为Singleton类的成员变量。在为此单例类创建第一个对象实例期间,我读取了XML文件并将值分配给相应的成员变量。因为,单个类的对象只创建一次,所以对DLL的所有调用都使用相同的变量值(从XML中读取)。