静态链接是不是一种选择。
比方说,我有依靠DLL的可执行文件。 一个解决方案是船舶在同一文件夹作为可执行的DLL。 现在,让我们说,我需要注入DLL,它依赖于一个DLL的过程。 由于DLL注入,哪里会把它依赖的DLL? 在同一个文件夹? 或在此过程中的目录将注入到?
静态链接是不是一种选择。
比方说,我有依靠DLL的可执行文件。 一个解决方案是船舶在同一文件夹作为可执行的DLL。 现在,让我们说,我需要注入DLL,它依赖于一个DLL的过程。 由于DLL注入,哪里会把它依赖的DLL? 在同一个文件夹? 或在此过程中的目录将注入到?
根据一个或多个其他DLL的DLL是不是特别的。 即使是一个简单的DLL将对这些居住在其他DLL的Windows共享组件的依赖。 这些“共享组件”的一个很好的例子是Kernel32.dll
和CRT DLL如MSVCR80.DLL
等
你可以找出到底哪些其他DLL你的DLL或EXE通过调用需要在Dependency Walker中 。 要做到这一点,只需运行depends.exe
从Visual Studio命令提示符并拖动和拖放感兴趣的DLL在出现的窗口。 如果你没有依赖学步车可用,您可以从上面的链接下载。
我不知道的DLL注入的东西,但它通常应该是足够的,如果你把在同一个文件夹中所有的(其他DLL)依赖作为你的DLL,这将是其中的EXE加载这些DLL所在的文件夹。
例如:如果C:\test\foo.exe
需要bar.dll
(这又要求baz.dll
,假设baz.dll
不是一个标准窗口共享组件),则将使二者bar.dll
和baz.dll
在C:\test
。
还有很多更重要的OS如何确定要加载的DLL,因为同一个DLL的多个版本在各个位置存在和MSDN有一个有用的文章动态链接库搜索顺序。