I have some external dependencies to load with my C++ program, like boost or other libraries. If those .DLL of libraries are not in $PATH, once I run my program I got a "can't load the DLL" error message. To make those .DLL can be load when running my program, I need to add those path to libraries directory. For example:
PATH=$PATH;c:\boost\lib
It works, but I don't like this stupid solution, which makes the global environment dirty. Also, I have lots more dependencies to add. The worst thing to do this way is, once you have different version of dependencies, it is very annoying. e.g. Here you have a project A depends on boost1.3.7, to develop it, you have to change the PATH
PATH=$PATH;c:\boost1.3.7\lib
And, here you need to develop another project B which depends on boost1.4.4, oh, great.... change the variable
PATH=$PATH;c:\boost1.4.4\lib
As you can see, this is not a smart solution.... If you have more than one library to link, that would be a real nightmare. What I want is to modify property of VC++ project, add those path to PATH variable only when running/debugging my program. I have tried to add path to
VC++ Directories -> Executable Directories
But it seems that's PATH for building, not for running. So, how can I add paths to my VC++ project for running my program correctly?
not sure why you consider adding it to the PATH as a 'stupid' solution? It is a very common solution for 3rd party libs. What if you want to redistribute your application, or just run it from the command line instead of running it under VS?
if you insist on not modifying the global path, you can also try:
btw to get around the versioning problem, use symlinks:
mklink /J c:/boost c:/boost1.3.7
then add just c:/boost to your PATH. If the version changes, change the symlink instead of the environment
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With