![](/img/trans.png)
[英]I need to call a dll that is calling 5 other dlls repeatedly in one application
[英]DLL that depends on other DLLs?
静态链接不是一种选择。
假设我有一个依赖DLL的可执行文件。 一种解决方案是将DLL与可执行文件放在同一文件夹中。 现在,我们需要将DLL注入依赖DLL的进程中。 因为DLL是注入的,我将它依赖的DLL放在哪里? 在同一个文件夹中? 还是在注入过程的目录中?
依赖于一个或多个其他DLL的DLL没什么特别的。 即使是琐碎的DLL也将依赖于其他DLL中驻留的Windows共享组件。 这些“共享组件”的一个好例子是Kernel32.dll
和CRT DLL,例如MSVCR80.DLL
等。
您可以通过调用Dependency Walker来确切地找到您的DLL或EXE需要哪些其他DLL。 为此,只需运行Visual Studio命令提示符中的depends.exe
,然后将感兴趣的DLL拖放到出现的窗口中即可。 如果您没有可用的依赖遍历器,可以从上面的链接下载它。
我不确定DLL注入的内容,但是如果将所有(其他DLL)依赖项放在与DLL相同的文件夹中,则通常就足够了,该文件夹就是加载这些DLL的EXE所在的文件夹。
例如:如果C:\\test\\foo.exe
需要bar.dll
(反过来又需要baz.dll
,假设baz.dll
不是标准的Windows共享组件),那么您将bar.dll
和baz.dll
放在C:\\test
。
操作系统确定要加载哪个DLL的方式还有很多,因为同一DLL的多个版本可能存在于各个位置,并且MSDN上有一篇有关动态链接库的搜索顺序的有用文章 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.