C++ 延迟加载DLL-我缺少什么?

C++ 延迟加载DLL-我缺少什么?,c++,visual-studio,dll,C++,Visual Studio,Dll,在MS Visual Studio(多个版本)的链接器输入选项下,是延迟加载DLL的字段。这到底是怎么回事 当我在这个字段中指定“mydll.dll”时,我总是收到一个警告,提示从mydll.dll中找不到导入内容,但当我运行我的可执行文件时,它抱怨它找不到mydll.dll(表明它确实需要从中导入内容),我被迫退出程序 我的最佳猜测是,我应该在附加依赖项下指定“mydll.lib”,然后根据工作原理在延迟加载dll文件中指定“mydll.dll”或“mydll.lib”。到目前为止,我尝试过的

在MS Visual Studio(多个版本)的链接器输入选项下,是延迟加载DLL的字段
。这到底是怎么回事

当我在这个字段中指定“mydll.dll”时,我总是收到一个警告,提示从mydll.dll中找不到导入内容,但当我运行我的可执行文件时,它抱怨它找不到mydll.dll(表明它确实需要从中导入内容),我被迫退出程序

我的最佳猜测是,我应该在
附加依赖项下指定“mydll.lib”,然后根据工作原理在
延迟加载dll文件中指定“mydll.dll”或“mydll.lib”。到目前为止,我尝试过的组合都不起作用,也没有任何东西能够清楚地说明应该如何使用它。救命啊


第二个问题有待评论(不是答案):这是在自定义图像处理应用程序的上下文中完成的,该应用程序既可以从实时摄像机源运行,也可以从磁盘上的预录制视频播放运行。当没有摄像头DLL时,我们希望能够运行,但将输入源限制为仅预录制的视频。使用延迟加载的DLL是实现这一点的合理方法吗?

对于每个延迟加载的库,通过将其包含在
附加依赖项中来正常链接库(与任何其他所需库一起)。还包括库
DelayImp.lib
:例如“thislib.lib thatlib.lib otherlib.lib DelayImp.lib”

现在,在
延迟加载DLL
下,使用其DLL名称指定每个延迟加载库,并用分号分隔多个条目,例如“thislib.DLL;thatlib.DLL”

编译(如有必要)、链接(如有必要)、享受。无需双方建议的额外混淆的
#pragma
代码

至于这是否是处理DLL实际上是可选的情况的合理方法,人们将有自己的看法。但这显然比手动使用
LoadLibrary
GetProcAddress
要简单得多,或者创建某种虚拟DLL,该DLL部署在搜索路径下游的文件夹中,而不是通常可以找到的DLL。这也大大简化了操作。这些是我所知道的唯一的选择