2011-11-27 71 views
0

我在使用SDL的C中创建了屏幕保护程序。我把它放在System32以及它使用的图片文件夹和SDL.dll中,但当我尝试运行它时遇到错误。它无法找到SDL.dll!它可以在其中包含SDL.dll的任何其他文件夹中运行。为什么不是System32?我甚至不试图将其作为屏幕保护程序运行。当我右键点击它并点击“测试”它说它找不到SDL.dll。哪里不对?我该怎么办?依赖于文件的屏幕保护程序C

回答

1

SDL.dll放在PATH的某处。 Windows需要能够找到它,并且它不知道要查看您创建的文件夹。

你可以告诉Windows的外观的DLL通过读取LoadLibrary的文档:

第一个目录搜索是包含用于创建调用进程(有关详细信息的图像 文件的目录,请参阅 CreateProcess函数)。这样做可以在没有 的情况下找到与进程关联的库(DLL)文件的私有动态链接 将进程的已安装目录添加到PATH环境 变量中。如果指定了相对路径,则整个相对路径为 附加到DLL搜索路径列表中的每个标记。要从相对路径加载模块 而不搜索任何其他路径,请使用 GetFullPathName获取非相对路径并使用非相对路径调用LoadLibrary和 。有关DLL搜索顺序的更多信息,请参见Dynamic-Link Library Search Order, 。

+0

啊,谢谢。我想我可能需要去寻找并修改sdl_main.lib的代码 –

+0

为什么你需要修改库?这是一个Windows API问题,更改库源不会解决任何问题。您需要a)将DLL安装到Windows \ System32文件夹中,或者b)将DLL的文件夹添加到系统'PATH'中。 –

相关问题