我有一个静态链接库,它使用我需要延迟加载的dll中的一些函数.所以在我的可执行文件属性中,我添加了这个dll Linker/Input/Delay Loaded DLLs.我不能在lib本身中添加这个选项,因为它没有Linker属性页面(因为它是一个静态库)
所以现在每当我在另一个可执行工具中使用这个lib时,我需要一遍又一遍地添加延迟加载选项再次,我想避免.我知道这曾经是一个实用主义者
#pragma comment(linker, "/DELAYLOAD:mydll.dll")
Run Code Online (Sandbox Code Playgroud)
然而,它对我不起作用,因为它说
warning LNK4229: invalid directive '/DELAYLOAD:mydll.dll' encountered; ignored
Run Code Online (Sandbox Code Playgroud)
除了LoadLibrary之外,还有出路吗?
在谷歌上做了一些研究(你猜对了),因为我一直对此类问题感兴趣。明显的链接是:
不幸的是,它是从 2004 年开始的,距今已有九年了,还有一些 VS 版本更早。
但情况变得更糟,我还发现了这一点:
http://bytes.com/topic/net/answers/280580-delayload-pragma-fixed-whidbey
这晚了一年,听起来很合理:
不,这从来都不可靠。在 6.0 中允许它是一个错误。我们后来通过添加警告修复了这一问题。
罗纳德·雷尔曼斯
视觉C++团队
我知道,除了您的三个建议之外,没有其他方法。
| 归档时间: |
|
| 查看次数: |
2670 次 |
| 最近记录: |