如何在单独的目录中运行带有DLL的.exe?

时间:2011-04-23 18:14:15

标签: c++ visual-studio dll

我知道这已经在这里讨论过但我没有找到我想要的问题,即:我有一个C ++应用程序,它使用了很多(超过20-30个)DLL。我已经在我的Visual Studio 2010项目中定义了.exe将被复制到ProjectDir(这样一切都很整洁)但是当.exe单独站在ProjectDir中时它无法访问存储在bin中的DLL。 //任何文件夹以及许多其他文件。

我可以以某种方式指向DLL文件夹,以便应用程序知道它们的位置吗? (并且<myapp>.exe.local文件夹在我的Windows 7中不起作用)

2 个答案:

答案 0 :(得分:3)

首先,没有必要将你的exe文件复制到你的项目目录,无论你的项目是什么时创建你的.exe文件,运行的目录都是你的项目目录。之后当你试图导入dll如果你找它相对windows首先在你运行的dir中搜索那个dll然后它检查它是否可以在任何目录定义的系统PATH变量中找到dll但是如果你检查对于一个绝对的地址,将无法寻找。

所以第一个技巧是设置你所有的dll pathes abslote,以便不会轻易导入搜索和dll,但如果你想将你的应用程序移动到另一台计算机上会有很多问题(例如{{1 }}) 。第二,你可以给你的dll pathes相对于正在运行的目录(不是应用程序路径,这两个可能不同),你也可以指定目录(例如HINSTANCE hDLL = LoadLibrary(L"C:\\mydll.DLL");

答案 1 :(得分:0)

您可以设置PATH变量。 在这里,您可以找到窗口查找dll的位置:http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx 以及如何在Windows 7中设置路径:http://geekswithblogs.net/renso/archive/2009/10/21/how-to-set-the-windows-path-in-windows-7.aspx