我目前正在开发一个带有SDL的C ++应用程序,它需要DLL才能工作。现在,它只会在与程序相同的文件夹中找到DLL。如何在名为“libs”的子目录中进行程序搜索。
答案 0 :(得分:1)
在Environment Variables
中添加dll文件夹路径(请注意其中的路径以;
分隔)。
答案 1 :(得分:1)
如果使用加载时链接,则需要将DLL放在DLL搜索路径中。这在此处记录:Dynamic-Link Library Search Order。通常,这需要您将DLL文件夹添加到PATH
环境变量。现在,向PATH
环境变量添加文件夹是解决问题的重要方法。你肯定不想这样做。
另一方面,如果切换到运行时链接,则可以将DLL的完整路径传递给LoadLibrary
。您可以调用GetModuleFileName
来查找可执行文件的文件名,然后拉出目录,然后添加\libs\MyDll.dll
。但是,运行时链接的一大缺点是您需要对导入的每个函数使用GetProcAddress
。
这些选项都不是特别有吸引力。我的建议是改变你提出的设计。将可执行文件所需的所有DLL放入与可执行文件相同的目录中。