如何自动加载子目录下的DLL

时间:2021-09-18 04:37:41
我搜到了一个类似的帖子,不过没解决的样子
http://bbs.csdn.net/topics/390057291


我是在Visual Studio 2015下写的Qt程序

我的目录
/bin
/bin/master.exe
/bin/utils.dll
/bin/tools/imagesview.dll

我设置好了
附加库目录有 /bin和/bin/tools
附加依赖项 utils.lib;imagesview.lib

编译通过了,没任何问题

然后运行的时候就出现了
无法启动此程序,因为计算机中丢失 imagesview.dll。尝试重新安装该程序以解决此问题。


我百度还有google之后没什么头绪, 貌似只能通过环境变量这个方法,然后使用QLibrary动态加载

不晓得有没有更好的办法,因为我看到有些程序并没有去设置环境变量

4 个解决方案

#1


你已经通过.lib链接了动态库,只需要把相应的动态库打包到你的安装程序即可。安装时释放到你可执行程序的同目录下。

#2


引用 1 楼 foruok 的回复:
你已经通过.lib链接了动态库,只需要把相应的动态库打包到你的安装程序即可。安装时释放到你可执行程序的同目录下。


这个我当然知道,同目录下是没问题的,我只是看到一些程序的子目录只有dll,不知道他们的程序是如何做到这点的

#3


不是插件的话:

通过QLibrary来调用,使用绝对路径来搜索dll,而且是一个c库。

除此之外就是按照系统平台的搜索顺序来决定你的部署方案,如windows平台:

https://msdn.microsoft.com/en-us/library/ms682586(VS.85).aspx

#4


把子目录加到环境变量path中去就好了为

#1


你已经通过.lib链接了动态库,只需要把相应的动态库打包到你的安装程序即可。安装时释放到你可执行程序的同目录下。

#2


引用 1 楼 foruok 的回复:
你已经通过.lib链接了动态库,只需要把相应的动态库打包到你的安装程序即可。安装时释放到你可执行程序的同目录下。


这个我当然知道,同目录下是没问题的,我只是看到一些程序的子目录只有dll,不知道他们的程序是如何做到这点的

#3


不是插件的话:

通过QLibrary来调用,使用绝对路径来搜索dll,而且是一个c库。

除此之外就是按照系统平台的搜索顺序来决定你的部署方案,如windows平台:

https://msdn.microsoft.com/en-us/library/ms682586(VS.85).aspx

#4


把子目录加到环境变量path中去就好了为