I have successfully divided a large MFC project into a couple of smaller DLL projects. Now I want to have a separate folder called "DLL" in my application's folder, where all the all the DLLs from the subprojects are placed.
Can anybody give me guidance in how to achieve this?
If you use LoadLibrary, you simply have to explicitly specify the full path of the DLLs you load.
If the DLLs are implicitly linked, you can do this in two ways.
The best solution would be to simply put the DLLs in the same directory as the executable.
DLL redirection is a fairly new feature (
Windows 2000 IIRC). Name your DLL directory<myapp>.exe.local
, and Windows will check it first for anything loaded viaLoadLibrary(Ex)
. This includes delay-loaded DLLs.EDIT: As pointed out by Eric this doesn't work. Sorry.
See Dynamic-Link Library Search Order. In short you can do so using registry keys under the "HKEY_LOCAL_MACHINE\SORTWARE\Microsoft\Windows\CurrentVersion\App Paths" key. A reg file like the following shows how: