tags:

views:

241

answers:

3

Hi, I am getting "dll not found:restarting the application may fix the problem" error when i try to execute a simple "HelloWorld" win32 console application. I know the location of the .dll. How to specify its location when executing the .exe from command prompt?

PS: copying the .dll to the .exe's current dir seems to solve the problem, but this approach is not suitable in this case.

+2  A: 

DLL loading happens deep in the plumbing of windows.

If the DLL is not found in the same directory as the application, the PATH is automatically scanned in order to find the directory.

So, the simplest answer to your problem is to add the directory containing the DLL to your PATH. Depending on when the DLL needs to be loaded by your code, you may be able to (temporarily) modify the PATH from inside your "HelloWorld" application.

Bevan
+1  A: 

The documentation for LoadLibraryEx has some discussion on how Windows searches for your dll. You might try using the LOAD_WITH_ALTERED_SEARCH_PATH flag if you can construct a full path to your DLL or use the SetDllDirectory function to add a directory to the search path.

Matt Ellis
A: 

To manually, permanently add your path to Windows PATH (permanently = until you remove it), right click My Computer>Properties>Advanced>Environment Variables>System Variables>Path>Edit>Variable Value, add a semicolon (which means "in addition to all before") and paste the full path of your dll.

Windows will search the path every time it can't find something in the current directory.

Emilio M Bumachar