I am not able to get much information about dynamic loading of DLL files from C++ . I know it does use some functions like LoadLibrary and FreeLibrary with GetProcAddress . But how it works actually internally in the OS perspective like where it actually looks for the DLL file and where it loads like Memory ? can someone help me on that with some diagrams ?
http://msdn.microsoft.com/en-us/library/ms682586%28VS.85%29.aspx” rel=“nofollow noretinger”MSDN ,有
有两个办法使用DL。 在连接点时,你可以动态地把它装上运行时间或静态的环节。
如果你使用<条码>LoadLibrary,则本组织拥有,用以确定谁去找DLs。 然后,它试图装上这些弹药。 然后,你可以尝试让职能点人了解你所指定的职能(通过指示或普通)并称职。
如果你静态地连接起来,联系人基本上增加了对LLL的提及,有些跳跃到DL每个职能的条目。 当本组织向您提出申请时,它发现提到了这些DLs,试图装上这些DLLs,并将装满的DLL职能地址填入跳板。 只有到那时,你的申请才被视为负荷工作,才会开始。
请注意,事实上,这比以往更为复杂。 例如,DLs反过来可以参考其他DLLs。 因此,如果装货人装上DLL,在DLLL可被考虑装货之前,它也需要(可能的话)装载其他DLL。
就Win32而言,装货商详情载于MSDN。 见here。
您的C++代码(视窗)重新正确。 • LoadLibrary和解决功能点 通常,你将GetProcaddress的结果归入你知道切入点功能的类别,然后在你的方案中使用。
例如,如果你有像浏览器这样的软体结构,那么你会决定贵方的羽流,获得该名录的档案名称清单,并打电话。 每位DLLL的图书馆(过滤档案名称将由你掌握)。 各位都与Getproc Address公司解决了所需的切入点,将其存放在图书馆的结构中,并将其列入一些插图清单。 后来,你通过这些职能点呼吁让pl子做工作。
如果你指明一条相对的道路(例如,“foo.dll”而不是“c:foo.dll”),则本组织图书馆在座的搜索途径。 详见MSDN。
此外,DLs被装入你的处理场。 通常,你不关心什么地方,但在过去,你可以通过“销毁”你的DLs来更快地装载时间。 我不认为,对于本组织负荷人员如何使图书馆记忆犹新,有什么保障,但你总是能够在你处理空间时获得基调。
您的DL的切入点(主角)也可对各种信息做出反应,即:校对、程序随附——以敏感的方式开展初步工作。
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding