当我尝试执行简单的“HelloWorld”win32控制台应用程序时,出现“找不到:重新启动应用程序可能会解决问题”错误。 我知道.dll的位置。 如何从命令提示符执行.exe时指定其位置?
PS:将.dll复制到.exe的当前目录似乎解决了这个问题,但是这种方法在这种情况下是不合适的。
DLL加载发生在windows的管道中。
如果在应用程序的同一目录中找不到DLL,则会自动扫描PATH以查找目录。
所以,对您的问题最简单的答案是将包含DLL的目录添加到您的PATH。 根据代码加载DLL的时间,您可以从“HelloWorld”应用程序中(暂时)修改PATH。
LoadLibraryEx的文档讨论了Windows如何搜索你的dll。 如果可以构建DLL的完整路径或使用SetDllDirectory函数向搜索路径添加目录,则可以尝试使用LOAD_WITH_ALTERED_SEARCH_PATH标志。
要手动将您的路径永久添加到Windows PATH(永久=直到您删除它),右键单击我的电脑>属性>高级>环境变量>系统变量>路径>编辑>变量值,添加一个分号以前所有“)并粘贴您的DLL的完整路径。
Windows将在每次找不到当前目录中的内容时搜索路径。
从: http : //msdn.microsoft.com/en-us/library/7d83bc18.aspx
通过隐式和显式链接,Windows首先搜索“已知的DLL”,如coreel32.dll和User32.dll。 Windows然后按以下顺序搜索DLL:
当前进程的可执行模块所在的目录。
当前目录。
Windows系统目录。 GetSystemDirectory函数检索此目录的路径。
Windows目录。 GetWindowsDirectory函数检索此目录的路径。
PATH环境变量中列出的目录。