Plugin DLLs that depend on other DLLs
I am writing a DLL to plug into another (3rd party) application. The DLL will need to depend on another set of DLLs (for license reasons I cannot link statically).
I would like my DLL to be "xcopy-deployable" to any directory. I would also like not to require adding this directory to the path.
If I just build the DLL the usual way, Windows will refuse to load the DLL, since it cannot find the DLLs next to the current process.
Are there any good options for helping Windows locate the DLL?
To answer some questions:
GetModuleFileName
. LoadLibrary
and GetProcAddress
would of course work, but is not really feasible in my case. I am using hundreds, if not thousands, of methods in the other DLLs. I really need to use the import-libraries. I had thought about using delay-loaded dlls combined with SetDllDirectory
in DllMain. Have anyone tried anything like this?
I can think of 3 ways.
LoadLibrary()
and GetProcAddress()
But if the dll isn't in the same folder as the .exe, how are you going to know where it is? forget Windows not knowing, how do you know?
你可以指定dll的路径作为LoadLibrary()的参数。
Another option is to modify the PATH variable. Have a batch file for launching the main app, and set the PATH=%PATH%;%~dp0. This ensures a minimal footprint, with no additional traces left in the system after running.
链接地址: http://www.djcxy.com/p/44544.html上一篇: 如何获取当前正在执行的DLL的位置?
下一篇: 依赖于其他DLL的插件DLL