使用cpp文件中的#pragma指定延迟加载dll

时间:2013-09-06 13:37:58

标签: c++ visual-studio

我有一个静态链接库,它使用了我需要延迟加载的dll中的一些函数。所以在我的可执行文件属性中,我在Linker/Input/Delay Loaded DLLs下添加了这个dll。我无法在lib本身中添加此选项,因为它没有Linker属性页(因为它是静态库)
所以现在每当我在另一个可执行工具中使用这个lib时,我需要一遍又一遍地添加延迟加载选项,我想避免。我知道这曾经是一个pragma

#pragma comment(linker, "/DELAYLOAD:mydll.dll")

然而,它对我不起作用,因为它说

warning LNK4229: invalid directive '/DELAYLOAD:mydll.dll' encountered; ignored

除了LoadLibrary之外,还有其他出路吗?

1 个答案:

答案 0 :(得分:4)

对Google进行了一些研究(猜猜你),因为我总是对这些问题感兴趣。明显的链接是:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/807606af-f7d7-4d9b-a9f3-062b23fddb2b/using-the-delayload-linker-switch-with-a-custom-dll

不幸的是,这是从2004年开始的'九年和之前的一些VS版本。

但它变得更糟,我也发现了这个:

http://bytes.com/topic/net/answers/280580-delayload-pragma-fixed-whidbey

这是一年晚了,听起来很合理:

  

不,这从未可靠地运作过。在6.0中允许它是一个错误。一   我们稍后通过添加警告来修复。

     

Ronald Laeremans

     

Visual C ++团队

我知道,除了你的三个建议之外别无其他。