我在C中制作了一个使用SDL的屏幕保护程序。我把它与它使用的图片文件夹和SDL.dll一起放在System32中,但是当我尝试运行它时出现错误。它无法找到SDL.dll!它适用于其中包含SDL.dll的任何其他文件夹。为什么不是System32?我甚至都没有尝试将其作为屏幕保护程序运行。当我右键单击它并点击"测试"它说它无法找到SDL.dll。怎么了?我该怎么办?
答案 0 :(得分:1)
将SDL.dll
放在PATH
上的某个位置。 Windows需要能够找到它,并且不知道要查看您创建的文件夹。
您可以通过阅读LoadLibrary的文档来了解Windows如何查找DLL:
搜索的第一个目录是包含图像的目录 用于创建调用进程的文件(有关更多信息,请参阅 CreateProcess函数)。这样做可以实现私有动态链接 与没有找到的进程关联的库(DLL)文件 将进程的已安装目录添加到PATH环境中 变量。如果指定了相对路径,则整个相对路径为 附加到DLL搜索路径列表中的每个标记。加载模块 从没有搜索任何其他路径的相对路径,使用 GetFullPathName获取非相对路径并调用LoadLibrary 非相对路径。有关DLL搜索顺序的更多信息, 见Dynamic-Link Library Search Order。