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

时间:2014-01-16 13:40:11

标签: c++ dll static-libraries exe

我想在我创建的lib中使用第三方dll的功能。 像这样:

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

并使用它:

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

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

现在我的问题是:我可以像这样构建lib然后从exe中使用它的函数吗?

2 个答案:

答案 0 :(得分:0)

您正在做的是动态(或运行时)链接,即您明确加载.dll并通过GetProcAddress解析函数。如果你这样做,那么你不需要.lib文件。

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

答案 1 :(得分:0)

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