Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
系统中的dll进程?_Dll_Loading - Fatal编程技术网

系统中的dll进程?

系统中的dll进程?,dll,loading,Dll,Loading,我对dll在内存中的加载和处理有疑问,通常dll是共享库,所以dll应该加载一次就足够了。如果进程将dll(例如advapi32.dll)加载到内存中,在那之后,另一个进程如何将advapi32.dll引用到该进程…如何为每个进程共享公共位置…我不完全确定您的问题是什么,但是的,如果多个进程导入相同的dll,则该dll的只读部分通常映射到所有这些进程中。另一方面,可以更改的部分,如BSS(变量)段,在每个进程中获得一个副本,以便一个进程所做的更改对其他进程不可见。如果希望在进程之间为自己的DLL

我对dll在内存中的加载和处理有疑问,通常dll是共享库,所以dll应该加载一次就足够了。如果进程将dll(例如advapi32.dll)加载到内存中,在那之后,另一个进程如何将advapi32.dll引用到该进程…如何为每个进程共享公共位置…

我不完全确定您的问题是什么,但是的,如果多个进程导入相同的dll,则该dll的只读部分通常映射到所有这些进程中。另一方面,可以更改的部分,如BSS(变量)段,在每个进程中获得一个副本,以便一个进程所做的更改对其他进程不可见。如果希望在进程之间为自己的DLL共享某些更改,可以将DLL中的数据段标记为共享。具体操作方式取决于所使用的开发工具。

DLL是内存映射的,因此它们是共享的,但这只是将代码加载到内存中。无论是单例还是代码创建唯一实例,在开发库时完全取决于您。根据Larsen的说法,感谢您的回复…我对DLL的共享使用有了清晰的认识。。。。