gpt4 book ai didi

c++ - 为什么要在运行时加载模块?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:56:51 25 4
gpt4 key购买 nike

有时,我阅读源代码,发现模块是手动加载的,如下所示。

HMODULE hmodMscoree = LoadLibraryEx(L"mscoree.dll", NULL, 0);
typedef HRESULT (STDAPICALLTYPE *GETCORVERSION)(LPWSTR szBuffer, DWORD cchBuffer, DWORD* dwLength);
GETCORVERSION pfnGETCORVERSION = (GETCORVERSION)GetProcAddress(hmodMscoree, "GetCORVersion");

为什么会在运行时加载mscoree.dll?

最好的问候,

最佳答案

一个优点是,如果您动态加载 DLL,则存在 DLL(例如 mscoree.dll)以及 DLL 中存在的函数(例如 mscoree.dll 中的 GetCORVersion ) 将仅在应用程序分别尝试加载 DLL 和调用函数时进行检查。如果 DLL 丢失,或者它的功能之一丢失,因为您只有一个旧版本,那么在应用程序不使用此功能的情况下不会有任何问题。相反,如果 DLL 是静态链接的,并且它丢失了,那么应用程序根本不会启动(您会收到一条错误消息)。

示例:我们有一个复杂的工业测量软件,它链接 wpcap.dll动态地。在测量不包括数据包嗅探的情况下,我们不必安装 WinPcap。

关于c++ - 为什么要在运行时加载模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8514352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com