从 *.lib 加载 *.dll 并在之后使用此库生成 *exe:可能吗?

Loading a *.dll from a *.lib and using this lib in generating an *exe afterwards: Is it possible?

本文关键字:exe dll 加载 lib 之后      更新时间:2023-10-16

我想将第三方dll的功能用于我创建的库。像这样:

m_hLib = LoadLibrary(L"Bla.dll"); 

并将其与:

void* fnBla = ::GetProcAddress(m_hLib , "MethodFromBla");  

使用相应方法中的一些东西。

现在我的问题是:我可以像这样构建库,然后从 exe 使用它的功能吗?

完全没有问题.exe静态链接到lib文件。这意味着 lib 代码成为 exe 代码的一部分。现在exe代码正在动态加载dll:)

您正在做的是动态(或运行时)链接,即您显式加载.dll并通过GetProcAddress解析函数。如果您正在执行此操作,则不需要 .lib 文件。

仅当您希望在编译时静态链接到.dll时,才需要 .lib 文件。链接器获取 .lib 文件,并根据 .lib 中的函数信息解析程序中的引用。因此,如果您不打算在编译时链接到.dll,则不需要 .lib。您只需要确保它与您的应用程序一起发布的.dll(在您的情况下为 Bla.dll)。