2012-10-05 59 views
0

我有一个应用程序加载依赖于我想要自定义加载的其他dll的dll。我遇到的问题是,在加载其他dll时,我在一个dll中对__pfnDliFailureHook2的定义不会继续。定义可扩展为dllexport给我一个重定义错误,因为它已经在delayhlp.cpp中定义,没有相应的dllimport。 在dll中定义一个如此一致的全局变量的正确方法是什么?跨DLL的延迟加载

回答

0

如果所有的DLL共享相同的C++运行时间,那么它们将共享相同的故障挂钩。但是,似乎有些涉及的DLL不共享运行时。这意味着你不能将你的失败钩子强加到这样一个DLL上。

什么是正确的方式来定义跨越​​DLL这样的一致的全局变量?

没有办法做到这一点。如果DLL要共享一个全局变量,他们必须全都合作。你不能从外部强加它。每个DLL必须选择加入。

+0

谢谢。我可以通过在每个DLL中重新定义回调来实现它。本来希望有更优雅的解决方案,但似乎不可能。 – nfkb