使用DLL中的函数而不加载它?

时间:2011-03-18 15:48:59

标签: c++ c dll linker pcre

我正在研究一些c ++ / c代码,即开源的ovaldi项目。我看到它们在发行版中包含pcre.dll,并在代码中调用该库中的函数;但他们永远不会加载DLL;它们只包含pcre.h头文件,似乎可以访问这些函数。他们真的只是用静态库构建并在发生事故时分发pcre.dll,还是有办法做到这一点?

4 个答案:

答案 0 :(得分:8)

你是什么意思他们不加载DLL?没有打电话给LoadLibrary?可能正在使用导入表,OS加载程序将自动加载DLL。

答案 1 :(得分:4)

他们DO加载dll,但只是隐式。你看,你可以创建一个.lib文件,它负责加载dll和重定向调用,链接到lib,包含标题,就是这样。在Visual Studio中,当您将依赖项设置为dll项目

时,这将自动完成

答案 2 :(得分:2)

应用程序本身可以使用链接器指示构建,以自动查找和加载DLL,而无需显式执行此操作。当问题是要加载的DLL版本时,通常只需要真正动态加载DLL。

答案 3 :(得分:0)

您可以在启动时加载动态库,但是如果库更改,则需要重新启动程序以重新加载库。使用LoadLibrarydlopen(unix)在运行时加载库允许您在进程运行时更新动态库。这对于长时间运行的进程(例如服务器)很有用,但是它也会导致重新加载库的额外开销。