我希望能够将DLL存储在子文件夹中,而不会让EXE抱怨缺少DLL。如何在子文件夹中查看EXE,例如“DLL”?如果这与它有关,我的IDE是Code :: Blocks。
答案 0 :(得分:2)
使用显式加载(LoadLibrary / GetProcAddress)使这项工作变得非常简单。您可以控制绑定过程,只需将完整路径传递给LoadLibrary。
对于隐式加载,您受系统的支配。虽然你可以增加PATH变量,但这非常严苛。面对将所有DLL放在可执行文件旁边或修改PATH的选择,我总是会选择前者。
还有DLL redirection的选项,但即使是微软似乎建议您将DLL放在可执行文件旁边而不是使用重定向。
答案 1 :(得分:2)
有很多方法可以通过清单或重定向来实现,但这些方法非常复杂。
我建议您使用以下结构:
myapp.exe
DLLs/
myapp_internal.exe
mydll1.dll
mydll2.dll
在上面的示例中,您的真实应用程序是myapp_internal.exe
,它位于DLL子文件夹中,因此可以正确定位所有DLL。 myapp.exe
二进制文件只是一个执行myapp_internal.exe
的存根应用程序。
我希望这有帮助!
答案 2 :(得分:0)
我实际上没有尝试过这个,但是没有理由它不起作用(着名的遗言)。
如果您真的更喜欢使用LoadLibrary / GetProcAddress,请帮自己一个忙,并使用wrapper library来简化其使用。