我有一个第三方库,在创建DLL(另一个第三方应用程序的插件)期间,我使用Visual Studio 2013链接器“/delayload”选项链接该库。
这个问题,是我找不到一种方法来指定路径的第三方DLL可以找到(我的DLL是要放在一个插件目录,父应用程序搜索,并加载找到的插件)。因此,第三方库的DLL必须放在父应用程序的目录。这是不可接受的。
我知道在部署DLL的过程中,我可以在系统环境的路径变量中指定一个新的目录路径。但是如果可能的话,我希望避免这一步。
是否可以指定延迟加载的DLL的路径,而不必使用LoadLibrary和GetProcAddress。使用运行时链接路径不如修改路径变量有吸引力,因为需要加载的函数太多了!
1条答案
按热度按时间0mkxixxg1#
我知道这很老了,但是正确的答案是使用延迟加载钩子,你可以设置这个钩子,当你得到你的dll的预加载通知时,你就可以用你的库的完整路径做
LoadLibrary
了。**MSDN文档:**learn.microsoft.com/en-us/cpp/build/reference/understanding-the-helper-function?redirectedfrom=MSDN&view=msvc-170#sample-hook-function
Raymond Chen的完整答案如下:https://devblogs.microsoft.com/oldnewthing/20170126-00/?p=95265