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