Windows 加载和使用DLL

Windows 加载和使用DLL,windows,variables,dll,loading,Windows,Variables,Dll,Loading,如果我错了,请纠正我,试着澄清一些新手的疑问 据我所知,DLL是系统注册的资源,当进程调用它们时,它们会加载到RAM中。当这种情况发生时,被调用的DLL被引用,它将一直加载到RAM中,直到该引用返回到零。因此,如果第二个程序调用了RAM中已经存在的同一个DLL,那么这个DLL将引用2,并且只有在两个程序都关闭它时才会被卸载 因此,DLL资源在两个进程之间共享,对吗?假设我有一个名为void setAint a的DLL函数和另一个int getA函数。假设A已初始化为值0。如果我在打开DLL的第一

如果我错了,请纠正我,试着澄清一些新手的疑问

据我所知,DLL是系统注册的资源,当进程调用它们时,它们会加载到RAM中。当这种情况发生时,被调用的DLL被引用,它将一直加载到RAM中,直到该引用返回到零。因此,如果第二个程序调用了RAM中已经存在的同一个DLL,那么这个DLL将引用2,并且只有在两个程序都关闭它时才会被卸载

因此,DLL资源在两个进程之间共享,对吗?假设我有一个名为void setAint a的DLL函数和另一个int getA函数。假设A已初始化为值0。如果我在打开DLL的第一个进程中将A设置为5,然后从第二个进程调用getA,它会给我值5吗

如果我加载库,将A设置为5并卸载库会怎么样。然后我再次加载库并调用getA,它将返回0,对吗?
是否有一种方法可以永久更改DLL中的变量,以便即使卸载后该值仍保留在下一次加载中?

代码是共享的。不是数据。如果需要跨进程共享数据,则由您在DLL中声明共享部分。MSVC++编译器中带有共享属性的pragma部分。与内存映射文件没有本质上的区别。因此,如果我只想共享一个结构,它会得到整个代码的处理。在pragma共享节中声明结构是否足够?是否有可能永久性地改变DLL中的变量?几乎可以肯定,你走错了方向。如果您需要在卸载DLL时保留数据值,那么您需要一个文件。谢谢Hans,这就是我的想法。两个进程将使用DLL,它们都可以访问和共享数据。我认为的一种方法是将配置保存在一个文件中,并在每次加载库时加载它,但希望得到一个更简单、更快的解决方案。